我有两个列的dataframe:
df=[[5,3,1,9],[0,6,2,3],[1,5,1,8],[5,6,2,8],[2,9,11,3],[0,1,1,17]]
df=pd.DataFrame(df1, columns = ['A_june', 'A_july', 'B_june', 'B_july'])
我希望将所有这些列分组到相同的回收箱中,即0-2、2-4、4-6、6-8、8-10和10+,并将它们显示在一个表中,其中包含填充这些行和列的计数:
Bins A_june A_july B_june B_july
0-2
2-4
4-6
6-8
...
我遇到麻烦的地方是如果我使用pd.cut,我不知道如何像这样显示它。我试过了。基本上
df=df(pd.cut(A_june,bins),pd.cut(A_july,bins))
df=df.groupby(pd.cut(A_june,bins),pd.cut(A_july,bins)).size().unstack()
但最后,我得到了groupby对象和类似的对象,这些对象无法满足我的需要,而且这些对象也没有正确的行和列。
(谢谢你的建议!)
发布于 2022-09-15 19:54:58
尝试:
x = pd.cut(
df.stack(),
pd.IntervalIndex.from_breaks([*range(0, 11, 2), np.inf], closed="left"),
).droplevel(0)
print(pd.crosstab(x, x.index))
指纹:
col_0 A_july A_june B_july B_june
row_0
[0.0, 2.0) 1 3 0 3
[2.0, 4.0) 1 1 2 2
[4.0, 6.0) 1 2 0 0
[6.0, 8.0) 2 0 0 0
[8.0, 10.0) 1 0 3 0
[10.0, inf) 0 0 1 1
https://stackoverflow.com/questions/73734996
复制相似问题