【问题标题】:Get a key: value pair dictionary from two consecutive columns of pandas dataframe从 pandas 数据帧的两个连续列中获取一个键:值对字典
【发布时间】:2019-08-27 17:45:50
【问题描述】:

我正在从 excel 工作表中提取数据并将其存储到数据框中。我想从数据框的列中创建一个键:值对字典。

例如:[{key=column1 : value = column2, key = column3 : value=column4 }],以此类推,直到最后一列。 这是我正在处理的示例数据:[1]:https://i.stack.imgur.com/JrurH.png

我知道逻辑,df.set_index('column1').T.to_dict('records')[0] 但是这个逻辑对我不起作用,因为我想获取每两个连续列的键:值对。

预期结果:

[{column1.value:column2.value, column3.value:column4.value, column5.value:column6.value}]

提前致谢。

【问题讨论】:

  • 所以你想要每一行都有一个单独的字典吗?还是整个 DataFrame 只用一本字典?
  • 您好 Alloz,感谢您的快速回复。我想要一个用于整个数据框的字典。

标签: pandas python-2.7 dictionary


【解决方案1】:

您可以使用::21::2 对偶数列和奇数列进行切片

dict(zip(df.iloc[:, ::2].to_numpy().ravel(), df.iloc[:, 1::2].to_numpy().ravel()))

输出:

{'A': 5,
 'B': 10,
 'C': 15,
 'D': 20,
 'E': 25,
 'F': 30,
 'G': 35,
 'H': 40,
 'I': 45}

或者如果每行一个:

[dict(zip(x[0].tolist(), x[1].tolist())) for x in zip(df.iloc[:, ::2].to_numpy(), df.iloc[:, 1::2].to_numpy())]
#[{'A': 5, 'D': 20, 'G': 35},
# {'B': 10, 'E': 25, 'H': 40},
# {'C': 15, 'F': 30, 'I': 45}]

【讨论】:

  • 我需要记住使用 to_numpy 而不是 .values。
【解决方案2】:

IIUC,试试这个:

设置数据框:

df = pd.DataFrame({'Column1':[*'ABC'],
                   'Column2':[5,10,15],
                   'Column3':[*'DEF'],
                   'Column4':[20,25,30],
                   'Column5':[*'GHI'],
                   'Column6':[35,40,45]})

使用reshapeset_indexto_dict

pd.DataFrame(df.values.reshape(-1,2)).set_index(0).to_dict(orient='dict')[1]

输出:

{'A': 5,
 'D': 20,
 'G': 35,
 'B': 10,
 'E': 25,
 'H': 40,
 'C': 15,
 'F': 30,
 'I': 45}

【讨论】:

  • @PriyankaLanjewar 你介意accepting这个答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-04-29
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 2020-06-08
  • 2022-01-05
  • 2021-02-25
相关资源
最近更新 更多