在熊猫数据框中找到两行字符串的差异

时间:2020-08-15 22:52:08

标签: python pandas

我有一个数据框,其中的一列中有一个字符串,其中包含用逗号分隔的项目。

col1
apple, banana, kiwi
apple, banana
banana

我想创建第二列'col2',该列显示每行之间的差异。

因此,我试图将每一行变成一组,并从上一行中减去它,如下所示:Python comparing two strings to differences

df['col2'] = set(df["col1"].shift(1)) - set(df["col1"])

但是,我收到以下错误消息:“ ValueError:值的长度与索引的长度不匹配”。 我在做什么错,有没有更好的方法来做我在做的事情?

编辑: 预期产量

col1                           col2
apple, banana, kiwi             
apple, banana                  kiwi
banana                         apple

1 个答案:

答案 0 :(得分:1)

df["temp"] = df.col1.str.replace("\s+", "").str.split(",")

将值分配给difference列:

df['difference'] = [    ""
                     if isinstance(last, float) or (not set(last).difference(first))
                     else tuple(set(last).difference(first))
                     if len(set(last).difference(first)) > 1
                     else min(set(last).difference(first))
                     for first, last in zip(df.temp, df["temp"].shift())
                  ]
df.drop('temp', axis=1)

    col1                   difference
0   apple, banana, kiwi 
1   apple, banana              kiwi
2   banana                    apple