[英]Efficient and fastest way in Pandas to create sorted list from column values
[英]Efficient way to extract column values from sorted data frame
假設我有一個數據框(按column1排序)df:
column1 column2
1 'Yes'
1 'No'
2 'Yes'
3 'Yes'
3 'Yes'
3 'Yes'
對於列1中的每個值,我想知道列2中的可能值,並將這些鍵值對存儲在結構中。
例如,鑒於上述df,我想要一個像
{1: ['yes','No']; 2: ['Yes'], 3:['Yes']}
我做了類似的事情
for key in df[column1].unique.tolist():
values = df.loc[df[column1] == key]][column2].unique().tolist()
dict.add((key, values))
但是,由於我的原始df很大,因此此方法花費的時間太長。 由於df按column1排序,所以我想知道是否有更有效的方法來實現此目的。
謝謝!
與刪除冗余數據duplicates
,然后groupby
一列,取唯一的值,並保存到字典:
final_dict = df.drop_duplicates().groupby('column1')['column2'].unique().to_dict()
我將看一下df.to_dict()方法。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_dict.html
您應該能夠得到想要的東西。 文檔站點上的示例如下:
>>> df = pd.DataFrame({'col1': [1, 2],
... 'col2': [0.5, 0.75]},
... index=['row1', 'row2'])
>>> df
col1 col2
row1 1 0.50
row2 2 0.75
df.to_dict()
{'col1': {'row1': 1, 'row2': 2}, 'col2': {'row1': 0.5, 'row2': 0.75}}
自從我發布以來,您似乎已更新,請通過“列表”進行檢查。
'list':類似{column-> [values]}的字典
首先刪除重復項,然后將其應用於to_dict()
df.drop_duplicates(subset=['col1','col2'],inplace=True)
df.to_dict()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.