我是熊猫和蟒蛇的新手。
我试图将项目按一列分组,并按组列出数据框中的信息。
我的数据框:
B C D E F
1 Honda USA 2000 Washington New
2 Honda USA 2001 Salt Lake Used
3 Ford Canada 2005 Washington New
4 Toyota USA 2010 Ney York Used
5 Honda USA 2001 Salt Lake Used
6 Honda Canada 2011 Salt Lake Crashed
7 Ford Italy 2014 Rome New
我被列设法组数据帧我B
和列表多少C
,D
,E
,F
列值的组B
。例如,我们看到在列中B
有4个Honda
我将其分组在一起。然后,我想列出以下信息-USA(3), Canada(1), 2000(1),2001(2), 2011(1), Washington(1), Salt Lake(3), New(1), Used(2), Crashed(1)
并对B列中的每个组(汽车品牌)进行相同的操作:
Car Country Year City Condition
1 Honda(4) USA(3) 2000(1) Washington(1) New(1)
Canada(1) 2001(2) Salt Lake(3) Used(2)
2011(1) Crashed(1)
2 Ford(2) Canada(1) 2005(5) Washington(1) New(2)
Italy(1) 2014(1) Rome(1)
...
到目前为止,我已经尝试过:
df.groupby(['B'])
这给了我 <pandas.core.groupby.generic.DataFrameGroupBy object at 0x11d559080>
在这一点上,我不确定在对column进行分组后应该如何继续向前编码以获得所需的结果B
。
谢谢你的建议。
您需要带有自定义函数的lambda函数,以分别处理每个列Series.value_counts
,然后将index的值连接到count的值Series
:
def f(x):
x = x.value_counts()
y = x.index.astype(str) + '(' + x.astype(str) + ')'
return y.reset_index(drop=True)
df1 = df.groupby(['B']).apply(lambda x: x.apply(f)).reset_index(drop=True)
print (df1)
B C D E F
0 Ford(2) Italy(1) 2014(1) Washington(1) New(2)
1 NaN Canada(1) 2005(1) Rome(1) NaN
2 Honda(4) USA(3) 2001(2) Salt Lake(3) Used(2)
3 NaN Canada(1) 2011(1) Washington(1) Crashed(1)
4 NaN NaN 2000(1) NaN New(1)
5 Toyota(1) USA(1) 2010(1) Ney York(1) Used(1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句