如何在熊猫中制作一个简单的频率表

Dri*_*ler 2 python pandas

我需要在Pandas数据框中按行计算1到5的整数。例如,对于

import pandas as pd

df = pd.DataFrame({'c1': [3, 1, 2], 'c2': [3, 3, 3], 'c3': [2, 5, None], 'c4': [1, 2, 3]})

   c1  c2   c3  c4
0   3   3  2.0   1
1   1   3  5.0   2
2   2   3  NaN   3    
Run Code Online (Sandbox Code Playgroud)

将创建以下内容:

   n1  n2  n3  n4  n5
0   1   1   2   0   0
1   1   1   1   0   1
2   0   1   2   0   0
Run Code Online (Sandbox Code Playgroud)

我遇到过.value_countscrosstab,但是我只是无法设置其中之一来获取我需要的东西。任何帮助将非常感激。

提前致谢!

Yoe*_*nov 5

您可以做的是使用.apply数据框上的函数,如下所示:

>>> df = pd.DataFrame({'c1': [3, 1, 2], 'c2': [3, 3, 3], 'c3': [2, 5, None], 'c4': [1, 2, 3]})
>>> df
   c1  c2   c3  c4
0   3   3  2.0   1
1   1   3  5.0   2
2   2   3  NaN   3
>>> df.apply(pd.Series.value_counts, axis=1)
   1.0  2.0  3.0  5.0
0  1.0  1.0  2.0  NaN
1  1.0  1.0  1.0  1.0
2  NaN  1.0  2.0  NaN
Run Code Online (Sandbox Code Playgroud)

享受(:和作为参考- 统计DataFrame每行中Series中项目的出现次数

ps-很明显,如果一个数字不存在,它将不会创建一个包含大量数字的表,只是在存在最后一个数字之前填充该表,否则该表将仅包含至少具有1个出现的数字。

  • 好答案。.fillna(0)也在末尾 (2认同)