我有一个数据框,其中的一列中有一个字符串,其中包含用逗号分隔的项目。
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
答案 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