Python 从排序数据帧中提取列值的有效方法
假设我有一个数据帧(按第1列排序)df: 对于第1列中的每个值,我想知道第2列中可能的值,并将这些键值对存储在一个结构中 例如,给定上面的df,我想要一个类似Python 从排序数据帧中提取列值的有效方法,python,pandas,Python,Pandas,假设我有一个数据帧(按第1列排序)df: 对于第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.ad
{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是按第1列排序的,我想知道是否有更有效的方法来实现这一点
谢谢大家! 我将研究df.to_dict()方法 你应该能得到你想要的东西。文档站点上的示例如下所示:
>>> 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':类似dict的{column->[values]}我将研究df.to_dict()方法 你应该能得到你想要的东西。文档站点上的示例如下所示:
>>> 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}}
看起来你在我发帖后更新了,请用“列表”参数查看
“列表”:类似dict的{column->[values]}首先删除重复项,然后应用于_dict()
首先删除重复项,然后应用于_dict()
删除重复的冗余数据,然后按一列删除分组,获取唯一值并保存到dict:
final_dict = df.drop_duplicates().groupby('column1')['column2'].unique().to_dict()
删除重复的冗余数据,然后按一列删除分组,获取唯一值并保存到dict:
final_dict = df.drop_duplicates().groupby('column1')['column2'].unique().to_dict()
请提供数据框架和预期输出以便于理解您的问题对不起,我只是添加了一些示例。请提供数据框架和预期输出以便于理解您的问题对不起,我只是添加了一些示例。没问题@NicoleYanNo problem@Nicoleyan为什么需要
删除重复项
不需要,但从理论上讲,仅对相关数据执行groupby
,可以提高性能。不过,你可以把复制品损害性能作为一个例子:)你这样认为吗?我不相信。我来测试一下。无论如何,我的高球答案{**df.groupby('column1')['column2'].unique()}
正如你所期望的,一个漂亮的答案:)你是对的!对于足够大的数据帧,drop\u duplicates
会有所不同。为什么需要drop\u duplicates
呢?不需要,但从理论上讲,仅对相关数据执行groupby
可以提高性能。不过,你可以把复制品损害性能作为一个例子:)你这样认为吗?我不相信。我来测试一下。无论如何,我的高球答案{**df.groupby('column1')['column2'].unique()}
正如你所期望的,一个漂亮的答案:)你是对的!对于足够大的数据帧,drop\u duplicates
起到了作用