每4行添加一个值

2024-04-19 15:57:02 发布

您现在位置:Python中文网/ 问答频道 /正文

“我用过”熊猫.read\u 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列的值,并生成新的数据帧: 第0+1+2+3行(7+3+4+5)第4+5+6+7行(6+0+5+4)第8+9+10+11行(3+4+3+2)第12+13+14+15行(5+3+4+2)

18不能被4除 所以我想扔16排,17排

我想要的结果是

19
15
12
14

Tags: csv数据noneread
1条回答
网友
1楼 · 发布于 2024-04-19 15:57:02

用途:

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

相关问题 更多 >