【问题标题】:Create cross-tabulation in python pandas showing which values are present在 python pandas 中创建交叉表,显示存在哪些值
【发布时间】:2020-08-16 02:26:51
【问题描述】:

给定以下数据:

pd.DataFrame(dict(
    name = ['a', 'a', 'a', 'b', 'b', 'b'],
    vals = [1, 2 , 3, 99, 3, 4]
))

看起来像:

  name  vals
0    a     1
1    a     2
2    a     3
3    b    99
4    b     3
5    b     4

我想知道如何创建以下内容:

     1     2    3      4     99
a  true  true  true  false  false
b  false false true  false  true

注意 - 上面的 truefalse 的确切值并不重要,我现在不知道如何创建这种类型的表。

【问题讨论】:

标签: python pandas data-manipulation crosstab


【解决方案1】:

试试这个crosstab

s=pd.crosstab(df.name,df.vals).astype(bool)
Out[38]: 
vals     1      2     3      4      99
name                                  
a      True   True  True  False  False
b     False  False  True   True   True

【讨论】:

    【解决方案2】:

    也可以get_dummies然后沿names聚合

    pd.get_dummies(df.set_index('name').vals).any(level=0) 
                                            #.max(level=0) for 1/0 dummies
                                            #.sum(level=0) for counts
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多