数据帧使用值作为标签

2024-06-08 11:11:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,它有许多行,每一行有购买物品的数量,然后是所有物品的名称,每列一个。如果项目少于列,则存在NaN值

   Count  Column1  Column2  Column3  Column4
 0     1        a      NaN      NaN      NaN
 1     3        c        a        b      NaN
 2     2        e        b      NaN      NaN
 3     4        b        c        d        f

我需要一个数据框,它的标签是项,值是真还是假,这取决于该行中是否存在项

   Count       a        b        c        d        e        f
 0     1    True    False    False    False    False    False
 1     3    True     True     True    False    False    False
 2     2   False     True    False    False     True    False
 3     4   False     True     True     True    False     True

我不知道怎么才能得到这个

编辑: 找到了适合我的解决方案:

from mlxtend.preprocessing import TransactionEncoder

dataset =  df.drop('Count', axis=1).T.apply(lambda x: x.dropna().tolist()).tolist()
te = TransactionEncoder()
te_ary=te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)


Tags: columns数据名称falsetruedf数量count
2条回答

试试看

dfm = df.melt('Count')
pd.crosstab(dfm['Count'], dfm['value']).astype(bool).reset_index()

输出:

value  Count      a      b      c      d      e      f
0          1   True  False  False  False  False  False
1          2  False   True  False  False   True  False
2          3   True   True   True  False  False  False
3          4  False   True   True   True  False   True

尝试使用^{}+^{}重塑^{}然后^{}级别=0:

pd.get_dummies(df.set_index('Count').stack()).sum(level=0).astype(bool).reset_index()
   Count      a      b      c      d      e      f
0      1   True  False  False  False  False  False
1      3   True   True   True  False  False  False
2      2  False   True  False  False   True  False
3      4  False   True   True   True  False   True

相关问题 更多 >