我有幾個資料幀(df、tmp_df 和 sub_df),我想將一列 tmp_df 作為串列輸入到 sub_df 的單元格中。我的代碼和資料框如下所示。但回圈部分無法正常作業:
import pandas as pd
df = pd.read_csv('myfile.csv')
tmp_df = pd.DataFrame()
sub_df = pd.DataFrame()
tmp_df = df[df['Type'] == True]
for c in tmp_df['Category']:
sub_df['Data'] , sub_df ['Category'], sub_df['Type'] = [list(set(tmp_df['Data']))],
tmp_df['Category'], tmp_df['Type']
df:
| 資料 | 類別 | 型別 |
|---|---|---|
| 30275 | 一種 | 真的 |
| 35881 | C | 錯誤的 |
| 28129 | C | 真的 |
| 30274 | D | 錯誤的 |
| 30351 | D | 真的 |
| 35886 | 一種 | 真的 |
| 39900 | C | 真的 |
| 35887 | 一種 | 錯誤的 |
| 35883 | 一種 | 真的 |
| 35856 | D | 真的 |
| 35986 | C | 錯誤的 |
| 30350 | D | 錯誤的 |
| 28129 | C | 真的 |
| 31571 | C | 真的 |
tmp_df:
| 資料 | 類別 | 型別 |
|---|---|---|
| 30275 | 一種 | 真的 |
| 28129 | C | 真的 |
| 30351 | D | 真的 |
| 35886 | 一種 | 真的 |
| 39900 | C | 真的 |
| 35883 | 一種 | 真的 |
| 35856 | D | 真的 |
| 28129 | C | 真的 |
| 31571 | C | 真的 |
如果我想要以下結果該怎么辦?
子_df:
| 資料 | 類別 | 型別 |
|---|---|---|
| [30275,35886,35883] | 一種 | 真的 |
| [28129,39900,28129,31571] | C | 真的 |
| [30351,35856] | D | 真的 |
uj5u.com熱心網友回復:
您可以選擇行query,然后groupby agg:
(df.query('Type') # or 'Type == "True"' if strings
.groupby('Category', as_index=False)
.agg({'Data': list, 'Type': 'first'})
)
輸出:
Category Data Type
0 A [30275, 35886, 35883] True
1 C [28129, 39900, 28129, 31571] True
2 D [30351, 35856] True
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/351691.html
下一篇:為什么我的輸出沒有按預期回傳?
