gpt4 book ai didi

python - 计算 DataFrame 每一行中 Series 中项目的出现次数

转载 作者:太空狗 更新时间:2023-10-29 18:24:23 24 4
gpt4 key购买 nike

我有一个看起来像这样的 pandas.DataFrame

COL1    COL2    COL3
C1 None None
C1 C2 None
C1 C1 None
C1 C2 C3

对于此数据框中的每一行,我想计算每个 C1、C2、C3 的出现次数,并将此信息作为列附加到此数据框中。例如,第一行有 1 个 C1、0 个 C2 和 0 个 C3。最终的数据框应该是这样的

COL1    COL2    COL3    C1  C2  C3
C1 None None 1 0 0
C1 C2 None 1 1 0
C1 C1 None 2 0 0
C1 C2 C3 1 1 1

因此,我创建了一个以 C1、C2 和 C3 作为值的系列 - top count 的一种方法是遍历 DataFrame 的行和列,然后遍历该系列并在匹配时递增计数器。但是是否有一种apply方法可以以紧凑的方式实现这一点?

最佳答案

您可以应用 value_counts:

In [11]: df.apply(pd.Series.value_counts, axis=1)
Out[11]:
C1 C2 C3 None
0 1 NaN NaN 2
1 1 1 NaN 1
2 2 NaN NaN 1
3 1 1 1 NaN

因此您可以填充 NaN 并仅添加您想要的基值:

In [12]: df.apply(pd.Series.value_counts, axis=1)[['C1', 'C2', 'C3']].fillna(0)
Out[12]:
C1 C2 C3
0 1 0 0
1 1 1 0
2 2 0 0
3 1 1 1

注意:直接为 DataFrame 使用 value_counts 方法是一个悬而未决的问题(我认为应该由 pandas 0.15 引入)。

关于python - 计算 DataFrame 每一行中 Series 中项目的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24516361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com