我需要将更改应用于 2 列中的当前数据框,其中一列的字典键和来自字典的每个值的另一列的值。例如,我找不到任何方法来做到这一点。
dict is - test = {'a':32, 'b':21, 'c':92}
当前数据框看起来像这样
date env result cost
2021-03-01 dev gcp.dev.a 30
2021-03-01 prd gcp.prd.d 35
2021-03-01 dev gcp.dev.j 98
2021-03-01 sandbox gcp.sandbox.b 94
在对结果和成本列数据框添加字典更改后,应如下所示 -
date env result cost
2021-03-01 dev gcp.dev.a 30
2021-03-01 prd gcp.prd.d 35
2021-03-01 dev gcp.dev.j 98
2021-03-01 sandbox gcp.sandbox.b 94
2021-03-01 dev gcp.dev.a 32
2021-03-01 prd gcp.prd.b 21
2021-03-01 prd gcp.prd.c 92
这里 gcp 是一个固定值,正在添加,dev 和 prd 来自 env 列。
在上方,您注意到最后 3 行是通过采用测试字典键值添加的,每个键值都添加到结果和成本中。即,应在每个键值对的两列中添加相关行
最佳答案
您还可以使用 pd.DateFrame.from_dict()
方法、append()
方法和 ffill()
方法来完成此操作:
test = {'a':32, 'b':21, 'c':92}
newdf=pd.DataFrame(test.values(),index=test.keys(),columns=['cost']).reset_index()
#OR(use any one of them to create dataframe named newdf)
newdf=pd.DataFrame.from_dict(test,orient='index',columns=['cost']).reset_index().rename(columns={'index':'result'})
最后:
newdf=df.append(newdf,ignore_index=True).ffill()
现在如果你打印 newdf
你会得到你想要的输出:
date result cost
0 2021-03-01 a 30
1 2021-03-01 d 35
2 2021-03-01 j 98
3 2021-03-01 b 94
4 2021-03-01 a 32
5 2021-03-01 b 21
6 2021-03-01 c 92
关于python - 将键值字典对应用于数据框中的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67207983/