将列转换为行并在python中打印与其相邻的值和值计数

时间:2019-03-19 10:22:38

标签: python pandas

我已将一个csv导入到我的python代码中,如下所示:

df = pd.DataFrame({
         50001:[np.nan,5,np.nan,5,5,np.nan],
         50002:[np.nan,np.nan,9,np.nan,np.nan,3],
         50003:[np.nan,3,5,np.nan,1,np.nan],

})

我希望我的数据看起来像这样:

enter image description here

我已经为此编写了代码,但是我只得到分数和价值计数。我无法获取rule_id列。这是我正在使用的代码:

for i in dframe:
    dframe1 = dframe.loc[: , i].value_counts()
    print(dframe1)

这给我的结果是:

enter image description here

如果您能帮助我解决这个问题,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

DataFrame.meltSeriesGroupBy.value_countsGroupBy.size结合使用:

df = (df.melt(var_name='Rule_ID', value_name='Score')
        .groupby('Rule_ID')['Score']
        .value_counts()
        .reset_index(name='Value_Count'))
print (df)
   Rule_ID  Score  Value_Count
0    50001    5.0            3
1    50002    3.0            1
2    50002    9.0            1
3    50003    1.0            1
4    50003    3.0            1
5    50003    5.0            1

或者:

df = (df.melt(var_name='Rule_ID', value_name='Score')
        .groupby(['Rule_ID', 'Score'])
        .size()
        .reset_index(name='Value_Count'))