2
A
回答
4
讓嘗試,,groupby
和apply(list)
:
df.set_index('month', append=True).groupby(level=[0,1,2], sort=False)['from']\
.apply(list).reset_index('month')
輸出:
month from
google 2016 2 [e]
apple 2016 1 [b, c]
2016 3 [l]
google 2016 3 [g]
0
既然你沒有提供代碼只擅長例如屏幕截圖,知道這是可以通過索引添加列表作爲值的細胞,例如:
df.loc[index, column_name] = list[b, c]
值的數據類型將對象
1
我的方法跟@ Scott的答案差不多,唯一不同的是沒有將單個值轉換成列表。
df.set_index('month', append=True).groupby(level=[0,1,2], sort=False)['from']\
.apply(lambda x : x.tolist() if len(x)>1 else x.values[0]).reset_index('month')
month from
google 2016 2 e
apple 2016 1 [b, c]
2016 3 l
google 2016 3 g
2
Simpliest是大熊貓0.20.0+
由水平和列一起使用新功能的GROUPBY:
df=df.groupby(['client','year','month'], sort=False)['from'].apply(list).reset_index('month')
print (df)
month from
client year
google 2016 2 [e]
apple 2016 1 [b, c]
2016 3 [l]
google 2016 3 [g]
對於一個元素列表的解決方案標量是類似Wen
- 自定義函數與if else
:
df=df.groupby(['client','year','month'], sort=False)['from'] \
.apply(lambda x: list(x) if len(x)>1 else x.iat[0]).reset_index('month')
print (df)
month from
client year
google 2016 2 e
apple 2016 1 [b, c]
2016 3 l
google 2016 3 g
而對於由,
加入的字符串,則使用join
而不是list
:
df=df.groupby(['client','year','month'], sort=False)['from']
.apply(', '.join).reset_index('month')
print (df)
month from
client year
google 2016 2 e
apple 2016 1 b, c
2016 3 l
google 2016 3 g
相關問題
- 1. 大熊貓驗證數據幀細胞
- 2. 大熊貓無法細胞
- 3. 添加行到大熊貓數據幀改變D型細胞
- 4. 總和在大熊貓數據幀「細胞」
- 5. 使進入細胞的熊貓數據幀中的列名
- 6. 分割的大熊貓細胞列表爲多列
- 7. 列表大熊貓數據幀
- 8. Python列表以大熊貓數據幀
- 9. 更改爲特定的列的D型細胞在大熊貓數據幀
- 10. Python的大熊貓防止細胞
- 11. 的Python - UNNEST細胞的熊貓數據幀
- 12. .fillna列如果兩個細胞熊貓
- 13. 熊貓:轉換對列於細胞
- 14. 列表熊貓數據幀列表
- 15. 大熊貓數據框中獲取根據排在細胞
- 16. 過濾大熊貓據幀
- 17. 平均大熊貓據幀
- 18. 子集大熊貓據幀
- 19. 在大熊貓數據幀
- 20. 在大熊貓數據幀
- 21. 大熊貓組數據幀
- 22. 大熊貓據幀循環
- 23. 大熊貓 - 在數據幀
- 24. 在大熊貓數據幀
- 25. CONCAT大熊貓據幀
- 26. 移調大熊貓據幀
- 27. Concating大熊貓據幀
- 28. 對大熊貓據幀
- 29. 大熊貓:在數據幀
- 30. 熔化大熊貓據幀
不錯'set_index' :) – Wen