我有一个值列表,我正在尝试将其与pandas df
的列相匹配,然后想要创建一个字典,该字典将列表值作为关键字,然后将数据框中不同列的字典值作为关键字。
下面是我的清单:
sample_list = [101,105,112]
我的数据框:
sample_df = pd.DataFrame([[101, "NJ"], [105, "CA"],[111, "MO"], [101, "NJ"], [112, "NB"], [101, "NJ"], [105, "CA"]], \
columns=["Col1", "Col2"])
看起来像这样,
Col1 Col2
0 101 NJ
1 105 CA
2 111 MO
3 101 NJ
4 112 NB
5 101 NJ
6 105 CA
现在,我正在尝试迭代列表值(这是我的new_dict
的键),并用Col1
匹配它们,如果它们匹配,我想提取Col2
值作为我的字典值。到目前为止,我的代码就是这样的:
new_dict = {}
for value in sample_list:
for i in sample_df['Col1']:
if value == i:
new_dict[value] = [i for i in sample_df['Col2']]
然而,我的new_dict
看起来像这样,
{101: ['NJ', 'CA', 'MO', 'NJ', 'NB', 'NJ', 'CA'],
105: ['NJ', 'CA', 'MO', 'NJ', 'NB', 'NJ', 'CA'],
112: ['NJ', 'CA', 'MO', 'NJ', 'NB', 'NJ', 'CA']}
我需要这样的输出,
{101: ['NJ'],
105: ['CA'],
112: ['NB']}
我怎样才能得到我想要的输出?任何帮助都会很好。
发布于 2018-06-26 05:20:51
这样就可以了:
new_dict = {i: [sample_df[sample_df['Col1']==i]['Col2'].values[0]] for i in sample_list}
https://stackoverflow.com/questions/51031857
复制相似问题