我使用了“ 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
答案 0 :(得分:1)
使用:
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
对于整数,可以将丢失或无值替换为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 14