我第一次看到这样的表:
xls = pd.ExcelFile("data.xlsx",header = None)
df = xls.parse('data', header=None)
结果如下:
0 1 2 3 4 5 6
0 291672 84885 1 1 0.03980 0 9
1 266227 77261 0 0 2.47720 1 0
2 264600 76722 1 1 1.79850 2 0
3 270364 78519 0 0 0.15620 0 5
我的目标是找到“5”和“6”列的每个组合,计算每个“2”“3”组合的数量,并获得每种类型的平均“4”。
例如:
"5" "6" "2" "3" average"4" count()
0 9 0 0 0.1222 23
0 9 0 1 0.1222 45
0 9 1 0 0.1222 24
0 9 1 1 0.1222 12
.....
我对Python很陌生。感谢您的帮助!
答案 0 :(得分:0)
您的问题有点不清楚,如果您向我们提供可重复的示例,以显示您尝试的内容,则可能会有所改进。但是,我认为这可能是你想要的?
import pandas as pd
data = {'foo':[5,2,2,4,4],
'bar':[5,2,1,1,1],
'baz':[.2,.3,.4,.5,.6],
'foo1':[2,2,2,1,1],
'foo2':[2,2,1,1,3]}
df = pd.DataFrame(data)
df
>
bar baz foo foo1 foo2
0 5 0.2 5 2 2
1 2 0.3 2 2 2
2 1 0.4 2 2 1
3 1 0.5 4 1 1
4 1 0.6 4 1 3
df.groupby(['foo','bar', 'foo1', 'foo2']).mean()
>
baz
foo bar foo1 foo2
2 1 2 1 0.4
2 2 2 0.3
4 1 1 1 0.5
3 0.6
5 5 2 2 0.2
即使它不是你想要的,你仍然应该阅读Pandas中的groupby
,因为这绝对是解决方案的一部分。
编辑:实际上现在我再次阅读它,由于计数,这可能更准确:
data = {'foo':[5,2,2,4,4],
'bar':[5,2,1,1,1],
'baz':[.2,.3,.4,.5,.6],
'foo1':[2,2,2,1,1],
'foo2':[2,2,1,1,1]}
df = pd.DataFrame(data)
df.groupby(['foo','bar', 'foo1', 'foo2']).agg(['mean', 'count'])
>
baz
mean count
foo bar foo1 foo2
2 1 2 1 0.40 1
2 2 2 0.30 1
4 1 1 1 0.55 2
5 5 2 2 0.20 1
这里我只使用agg
来传递两个聚合函数,您可以看到折叠了相同的行并将计数提升到2
。请注意,foo2
中的一个值已从第一个示例更改为显示此工作。