Python Pandas 计算每行的列中值的数量并将其放入列中

标签 python pandas

假设我有一个像这样的数据框:

    x     y
1   45    T
2   70    T
3   88    F
4   45    F
5   88    F
..

我想一起计算两列的 value_counts,并将它们放在单独的列中:

    x     y    z
1   45    1    1
2   70    1    0
3   88    0    2
..

其中 x 是我拥有的普通数字(整数),y 是它在原始数据帧中获得的 T 值的数量,z 是它获得的 F 值的数量。

最佳答案

使用crosstab + reset_index + rename_axis :

df = pd.crosstab(df['x'], df['y']).reset_index().rename_axis(None, 1)
print (df)
    x  F  T
0  45  1  1
1  70  0  1
2  88  2  0

替代groupby + size + unstack :

df = df.groupby(['x','y'])
       .size()
       .unstack(fill_value=0)
       .reset_index().rename_axis(None, 1)
print (df)
    x  F  T
0  45  1  1
1  70  0  1
2  88  2  0

但是如果需要重命名列(但只需要y中的几个唯一值)需要dict:

d = {'T':'y','F':'z'}
df = df.groupby(['x','y'])
       .size()
       .unstack(fill_value=0)
       .rename(columns=d)
       .rename_axis(None, 1)
       .reset_index()
print (df)
    x  z  y
0  45  1  1
1  70  0  1
2  88  2  0

关于Python Pandas 计算每行的列中值的数量并将其放入列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931716/

相关文章:

python - Pandas 按列值拆分 DataFrame

python-2.7 - 以文件名作为列标题将多个 *.txt 文件读入 Pandas Dataframe

python - 将 Pandas Dataframe 中的特定列添加到另一个 Pandas Dataframe

python - Python 中 Pandas 的快速取子集

python - 给定一组字符串,创建一个字典字典,使用它们作为具有默认值的条目的键

python - 在 python 中对 YAML block 映射序列进行排序

python - CountVectorizer(分析器 ='char_wb')未按预期工作

python - Pandas reshape 宽到长返回零结果

python - 特征列表处理程序不响应 += 列表扩展

python-3.x - 通过从目录中读取所有.txt文件来创建一个JSON对象