我正在尝试将数据帧中具有相同时间戳的所有行合并为一行。df为5k x 20。
A B ...
timestamp
11:00 NaN 10 ...
11:00 5 NaN ...
12:00 15 20 ...
... ... ...
按如下方式对2个11:00行进行分组
A B ...
timestamp
11:00 5 10 ...
12:00 15 20 ...
... ... ...
任何帮助都将不胜感激。谢谢。
我试过了
df.groupby( df.index ).sum()
发布于 2015-05-29 01:32:10
您可以取消透视(‘melt
’) DataFrame以将其从宽格式转换为长格式,删除空值,然后通过groupby
进行聚合。
import pandas as pd
df = pd.DataFrame({'timestamp' : ['11:00','11:00','12:00'],
'A' : [None,5,15],
'B' : [10,None,20]
})
A B timestamp
0 NaN 10 11:00
1 5 NaN 11:00
2 15 20 12:00
df2 = pd.melt(df, id_vars = 'timestamp') # specify the value_vars if needed
timestamp variable value
0 11:00 A NaN
1 11:00 A 5
2 12:00 A 15
3 11:00 B 10
4 11:00 B NaN
5 12:00 B 20
df2.dropna(inplace=True)
df3 = df2.groupby(['timestamp', 'variable']).sum()
value
timestamp variable
11:00 A 5
B 10
12:00 A 15
B 20
df3.unstack()
value
variable A B
timestamp
11:00 5 10
12:00 15 20
发布于 2015-05-28 20:52:54
尝试使用resample
>>> df.resample('60Min', how='sum')
A B
2015-05-28 11:00:00 5 10
2015-05-28 12:00:00 15 20
在Pandas Documentation中可以找到更多示例。
发布于 2015-05-29 01:44:03
将NaN
值替换为0后的groupby
。
df.fillna(0, inplace=True)
df.groupby(df.index).sum()
https://stackoverflow.com/questions/30516528
复制