我使用了"pandas.read_csv“,数据如下所示
A B C D
00 2019-2 315993352 7 78
01 2019-1 317515869 3 69
02 2018-4 318533054 4 66
03 2018-3 318769547 5 65
04 2018-2 319952126 6 69
05 2018-1 322476579 None 70
06 2017-4 323018027 5 63
07 2017-3 321828003 4 58
08 2017-2 321337443 3 52
09 2017-1 322300905 4 46
10 2016-4 321747881 3 45
11 2016-3 324384755 2 44
12 2016-2 456366381 5 50
13 2016-1 453014579 3 70
14 2015-4 452271967 4 115
15 2015-3 452000000 2 59
16 2015-2 453243847 None 59
17 2015-1 321738470 1 62它有18行。我希望每4行添加C列的值,并创建新的数据帧: row0+row1+row2+row3(7+3+4+5) row4+row5+row6+row7(6+0+5+4) row8+row9+row10+row11(3+4+3+2) row12+row13+row14+row15(5+3+4+2)
18不能被4整除,所以我想抛出row16,row17
+),我想要的结果是
19
15
12
14发布于 2019-11-05 15:53:37
使用:
N = 4
#first remove last rows if remainders
df = df.iloc[:len(df) // N * N]
#convert to numeric
df['C'] = pd.to_numeric(df['C'], errors='coerce')
#aggregate sum
df = df.groupby(np.arange(len(df)) // N)['C'].sum().to_frame()
print (df)
C
0 19.0
1 15.0
2 12.0
3 14.0对于整数,可以将missing或None值替换为0
N = 4
df = df.iloc[:len(df) // N * N]
df['C'] = pd.to_numeric(df['C'], errors='coerce').fillna(0).astype(int)
df = df.groupby(np.arange(len(df)) // N)['C'].sum().to_frame()
print (df)
C
0 19
1 15
2 12
3 14https://stackoverflow.com/questions/58706738
复制相似问题