我有一个像下面这样开始的DataFrame:
第1栏 | 专栏2 | |
---|---|---|
0 | Berlin |
['Hamburg', 'Munich', 'Berlin', 'Stuttgart'] |
1个 | Tokyo |
['Tokyo', 'Osaka', 'Kyoto', 'Sapporo'] |
2 | Los Angeles |
['New York', 'Chicago', 'Boston', 'Los Angeles'] |
3 | London |
['Birmingham', 'London', 'Glasgow', 'Liverpool'] |
我想从Column2列表中删除Column1中存在的城市,以使DataFrame变成这样:
第1栏 | 专栏2 | |
---|---|---|
0 | Berlin |
['Hamburg', 'Munich', 'Stuttgart'] |
1个 | Tokyo |
['Osaka', 'Kyoto', 'Sapporo'] |
2 | Los Angeles |
['New York', 'Chicago', 'Boston'] |
3 | London |
['Birmingham', 'Glasgow', 'Liverpool'] |
由于逐行循环违反数据帧逻辑,因此解决此问题的最佳方法是什么?
尝试explode
,query
然后gropuby
:
(df.explode('Column2')
.query('Column1 != Column2')
.groupby(level=0)
.agg({'Column1': 'first',
'Column2': list
})
)
或直接apply
:
df['Column2'] = df.apply(lambda row: [x for x in row['Column2'] if x!=x['Column1']],
axis=1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句