[英]Group by a dataframe in Pandas with common values across columns
我在Pandas中有一個數據幀,例如:
Col1 Col2 Col3
A B 10/10/2016
B A 09/12/2016
A C 08/11/2016
我想為Col1和Col2中的每個唯一條目獲取他們的Col3值。 問題是用戶可以在Col1或Col2中,因此組合Col1將錯過B-A線。
有關如何實現它的任何想法?
提前謝謝了!
你可以:
df.set_index(['Col3']).stack().reset_index(-1, drop=True)
要得到:
Col3
10/10/2016 A
10/10/2016 B
09/12/2016 B
09/12/2016 A
08/11/2016 A
08/11/2016 C
您可以進一步處理,例如使用(假設上面已分配給result
:
result.groupby(result.values).apply(lambda x: x.index.tolist())
A [10/10/2016, 09/12/2016, 08/11/2016]
B [10/10/2016, 09/12/2016]
C [08/11/2016]
或者,您可以使用pd.melt
:
pd.melt(df, value_vars=['Col1', 'Col2'], id_vars='Col3')
Col3 variable value
0 10/10/2016 Col1 A
1 09/12/2016 Col1 B
2 08/11/2016 Col1 A
3 10/10/2016 Col2 B
4 09/12/2016 Col2 A
5 08/11/2016 Col2 C
也可以看看:
df.set_index(['Col3']).stack().reset_index()
Col3 level_1 0
0 10/10/2016 Col1 A
1 10/10/2016 Col2 B
2 09/12/2016 Col1 B
3 09/12/2016 Col2 A
4 08/11/2016 Col1 A
5 08/11/2016 Col2 C
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.