![](/img/trans.png)
[英]Convert array of dicts to Pandas dataframe, and convert dataframe back to array of dicts
[英]Convert dataframe column to array and inset back into dataframe
我有這樣的 pandas 數據框表:
唯一身份 | 數數 | 樣品 |
---|---|---|
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']]))
通過GroupBy.first
為沒有列Unique ID
的聚合創建字典,通過GroupBy.agg
join
為列Samples
聚合:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.