将字符串拆分为不同的列无法正常工作

Split strings into different columns not working correctly

我正在处理一个包含评论列的大型数据集,该列由一系列字符串组成,例如:“A,B,C”、“A,B*,B”等。

例如,

import pandas as pd

df=pd.DataFrame({'cat1':[1,2,3,4,5],
                 'review':['A,B,C', 'A,B*,B,C', 'A,C', 'A,B,C,D', 'A,B,C,A,B']})
df2 = df["review"].str.split(",",expand = True)
df.join(df2)

我想将该列拆分为每个字母的单独列,然后将这些列添加到原始数据框中。我用 df2 = df["review"].str.split(",",expand = True)df.join(df2) 来做到这一点。

但是,当我使用 df["A"].unique() 时,有些条目不应出现在列中。我只想'A'出现在那里,但还有B和C。而且B和B*没有分成两列。

我的数据集很大,所以我不知道如何正确地说明这个问题,我试图提供一个小规模的例子,但是,在这个例子中一切似乎都正常工作;

我试图通过 df['review'].unique() 查看原始列,所有条目均已正确输入(没有遗漏逗号或类似内容),所以我想知道我的方法是否有问题影响它不能在所有数据集上正常工作。还是我的数据集有问题。

有人对我应该如何进行故障排除有任何建议吗?

when i use df["A"].unique() there are entries that should not be in the column. I only want 'A' to appear there

IIUC,您想创建虚拟变量吗?

df2 = df.join(df['review'].str.get_dummies(sep=',').pipe(lambda x: x*[*x]).replace('',float('nan')))

输出:

   cat1     review  A    B   B*  C    D
0     1      A,B,C  A    B  NaN  C  NaN
1     2   A,B*,B,C  A    B   B*  C  NaN
2     3        A,C  A  NaN  NaN  C  NaN
3     4    A,B,C,D  A    B  NaN  C    D
4     5  A,B,C,A,B  A    B  NaN  C  NaN