请问一下 pandas 如何统计每一行元素的个数

2018-03-23 15:54:12 +08:00
 kangsgo

就是我有一个表格,大致像下面这样子:

|     |  0  |  1  |  2  |  3  |  4  |  5  |
| --- | --- | --- | --- | --- | --- | --- |
|  1  |  A  |  A  |  B  |  B  |  A  |  B  |
|  2  |  B  |  A  |  B  |  A  |  A  |  A  |
....

我需要统计每一行的 A,B 的个数或者 A,B 在这一行所占的百分比,有什么好的办法么

(比如上面的例子 1 有 3 个 A,3 个 B; 2 有 4 个 A,2 个 B )

perdata.apply(lambda x:x.count('~'),axis=0)

提示如下:

KeyError: ('Level ~ must be same as name (None)', 'occurred at index 0')

谢谢

5864 次点击
所在节点    Python
4 条回复
ipwx
2018-03-23 16:03:47 +08:00
In [1]: import pandas as pd
In [2]: df = pd.DataFrame([list('AABBAB'), list('BABAAA')])

In [3]: df
Out[3]:
0 1 2 3 4 5
0 A A B B A B
1 B A B A A A

In [4]: df == 'A'
Out[4]:
0 1 2 3 4 5
0 True True False False True False
1 False True False True True True

In [5]: (df == 'A').sum(axis=1)
Out[5]:
0 3
1 4
dtype: int64
kangsgo
2018-03-23 16:09:09 +08:00
@ipwx 非常感谢~牛!
congeec
2018-03-23 16:29:27 +08:00
虽然问题解决了,还是建议了解一下
from collections import Counter
epicnoob
2018-03-23 16:34:47 +08:00
>>> pandas.value_counts(df.iloc[0])
B 3
A 3
Name: 0, dtype: int64
>>> pandas.value_counts(df.iloc[1])
A 4
B 2
Name: 1, dtype: int64

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/440804

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX