在熊猫中每 4 行添加值
Posted
技术标签:
【中文标题】在熊猫中每 4 行添加值【英文标题】:Adding values per 4 rows in pandas 【发布时间】:2020-03-01 13:19:32 【问题描述】:我用的是“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 列的值并创建新的数据框: 第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 整除 所以我想扔 row16,row17
+)而我想要的结果是
19
15
12
14
【问题讨论】:
【参考方案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
【讨论】:
然后出现新的错误标志。 ValueError:无法将字符串转换为浮点数:'None' @MonoNeuElogy - 然后使用df['C'] = pd.to_numeric(df['C'], errors='coerce')
- 它将 None 替换为 NaN。如果我的回答有帮助,请不要忘记accept。谢谢。
真的很抱歉。我改变了我的例子。以上是关于在熊猫中每 4 行添加值的主要内容,如果未能解决你的问题,请参考以下文章