【问题标题】:Summarizing frequencies across two columns with Pandas [closed]用 Pandas 总结两列的频率[关闭]
【发布时间】:2017-05-11 18:22:34
【问题描述】:

我正在寻找一个 Pandas 函数,它在给定由两列组成的 DataFrame 的情况下执行以下基本操作。给定第二列中的每个特定值,我想获得第一列中元素的条件分布。

这是一个例子。给定:

import pandas as pd
pd.DataFrame([['a', 'b'], ['a', 'b'], ['a', 'b'], ['b', 'b'], ['b', 'b'],['a','a']])

看起来像:

   0  1
0  a  b
1  a  b
2  a  b
3  b  b
4  b  b
5  a  a

我们应该得到:

    'a' 'b'
'a'  1   0.6
'b'  0   0.4

请注意,列的总和必须为 1,因为这些是频率分布。

【问题讨论】:

    标签: python python-3.x pandas dataframe frequency-distribution


    【解决方案1】:
    import pandas as pd
    data = pd.DataFrame([['a', 'b'], ['a', 'b'], ['a', 'b'], ['b', 'b'], ['b', 'b'],['a','a']])
    
    #Answer:
    pd.crosstab(data[0],data[1]).apply(lambda r: r/r.sum(), axis=0)
    
    
    1   a   b
    0       
    a   1   0.6
    b   0   0.4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 2019-06-14
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多