3 回答

TA贡献1853条经验 获得超18个赞
如果你想计算每天的平均值,你可以使用groupby如下:
import pandas as pd
df = pd.DataFrame({
"date":["20130101","20130101","20130103","20130103","20130105","20130105"],
"part1":[0.5,0.7,1.3,1.5,0.1,0.3],
"part2":[0.67,-0.03,1.95,-3.25,-0.3,0.6]
})
df.groupby("date").mean().reset_index()
结果:
date part1 part2
0 20130101 0.6 0.32
1 20130103 1.4 -0.65
2 20130105 0.2 0.15

TA贡献2080条经验 获得超4个赞
您可以by为熊猫groupby方法的参数传递一个函数。
from functools import partial
import pandas as pd
df = pd.DataFrame({
"date":["20130101","20130101","20130103","20130103","20130105","20130105"],
"part1":[0.5,0.7,1.3,1.5,0.1,0.3],
"part2":[0.67,-0.03,1.95,-3.25,-0.3,0.6]
})
def grouper(df, val):
foo = df.iloc[val]['part1']
if foo > 0.0 and foo < 0.4:
return 0
elif foo > 0.3 and foo < 1.0:
return 1
elif foo > 1.0:
return 2
grouped = df['part2'].groupby(by=partial(grouper, df)).mean()
这导致
1 0.15
2 0.32
3 -0.65
Name: part2, dtype: float64
添加回答
举报