Pandas 行之间的差异作为列中的列表
我有一个像这样的(混乱的)pd.dfPandas 行之间的差异作为列中的列表,pandas,Pandas,我有一个像这样的(混乱的)pd.df Number Day Colour City 123 Monday Red London 234 Monday Blue Paris 234 Wednesday Yellow Paris 345 Tuesday Green Berlin 有没有一种优雅的方法来创建一个新的df,它具有相同的列,但显示两行like['Number']之间
Number Day Colour City
123 Monday Red London
234 Monday Blue Paris
234 Wednesday Yellow Paris
345 Tuesday Green Berlin
有没有一种优雅的方法来创建一个新的df,它具有相同的列,但显示两行like['Number']之间的差异,作为列中的列表。所以期望的输出是这样的
Number Day Colour City
123 Monday Red London
234 Monday, Wednesday Blue, Yellow Paris
345 Tuesday Green Berlin
即使是在正确的方向上的一点,关于哪些功能我应该看将是有益的。我感兴趣的值总是字符串,而不是浮点或整数。非常感谢。这里有一个方法:
df = (df
.groupby('Number')
.agg(','.join)
.applymap(lambda x: x.split(',') if ',' in x else x)
.reset_index())
Number Day Colour City
0 123 Monday Red London
1 234 [Monday, Wednesday] [Blue, Yellow] [Paris, Paris]
2 345 Tuesday Green Berlin
groupby
和agg
注意:{*s}
返回中所有内容的集合
。这确保了我们只加入了独特的事物,并解释了为什么我们得到了Paris
,而不是Paris,Paris
df.groupby('Number').agg(lambda s: ', '.join({*s}))
Day Colour City
Number
123 Monday Red London
234 Wednesday, Monday Blue, Yellow Paris
345 Tuesday Green Berlin
或
df.groupby('Number', as_index=False).agg(lambda s: ', '.join({*s}))
Number Day Colour City
0 123 Monday Red London
1 234 Wednesday, Monday Blue, Yellow Paris
2 345 Tuesday Green Berlin