我有一个像这样的(困惑的)pdf.df,
Number Day Colour City
123 Monday Red London
234 Monday Blue Paris
234 Wednesday Yellow Paris
345 Tuesday Green Berlin
有没有一种优雅的方法来制作一个新的 df ,它具有相同的列,但将两行之间的差异显示为列中的列表,例如 ['Number'] 。所以期望的输出是这样的。
Number Day Colour City
123 Monday Red London
234 Monday, Wednesday Blue, Yellow Paris
345 Tuesday Green Berlin
即使是关于我应该查看哪些功能的正确方向的一点也会有所帮助。我感兴趣的值将始终是字符串而不是 float 或整数。非常感谢。
最佳答案
groupby
和 agg
注意: {*s}
返回 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
关于pandas - 行之间的差异作为列内的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60211623/