簡體   English   中英

從排序的數據框中提取列值的有效方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM