我有這樣的熊貓資料框表:
| 唯一身份 | 數數 | 樣品 |
|---|---|---|
| A-1 | 3 | 6.1(蘋果) |
| A-1 | 3 | 4.5(香蕉) |
| A-1 | 3 | 5.6(獼猴桃) |
| A2 | 2 | 7.2(橙色) |
| A2 | 2 | 3.6(芒果) |
我想將“樣本”列轉換為串列/陣列,并僅獲取其他列的第一次出現。結果表應如下所示
| 唯一身份 | 數數 | 樣本總結 |
|---|---|---|
| A-1 | 3 | 6.1(蘋果)、4.5(香蕉)、5.6(獼猴桃) |
| A2 | 2 | 7.2(橙色),3.6(芒果) |
到目前為止,這就是我的代碼中的內容:
for i in range(len(dataframe['unique_id'])):
SampleSummary= np.asarray(pd.concat([dataframe['Sample']]))
uj5u.com熱心網友回復:
GroupBy.first為不帶列的聚合創建字典Unique ID,為按列Samples聚合join的GroupBy.agg:
d = dict.fromkeys(dataframe.columns.difference(['Unique ID']), 'first')
d['Samples'] = ', '.join
df = dataframe.groupby('Unique ID', as_index=False).agg(d)
print (df)
Unique ID Count Samples
0 A-1 3 6.1 (Apple), 4.5 (Banana), 5.6 (Kiwi)
1 A-2 2 7.2 (Orange), 3.6 (Mango)
或者可以GroupBy.transform用于由連接字串填充的列,然后使用DataFrame.drop_duplicates:
dataframe['Samples'] = dataframe.groupby('Unique ID')['Samples'].transform(', '.join)
df = dataframe.drop_duplicates('Unique ID')
print (df)
Unique ID Count Samples
0 A-1 3 6.1 (Apple), 4.5 (Banana), 5.6 (Kiwi)
3 A-2 2 7.2 (Orange), 3.6 (Mango)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/458747.html
下一篇:由幾列組成一個公共列
