我有两本如下的字典
dic1 = { 'T1': ['INC1','INC2','INC3'] , 'T2': ['INC2','INC4','INC5'],'T3': ['INC2']}
dic2 = { 'INC1' :'LOC1','INC2' :'LOC2','INC3' :'LOC3','INC4' :'None','INC5' :'None'}
我使用以下代码创建了 dic1 的数据框
import pandas as pd
df_1 = pd.DataFrame.from_dict(dic1, orient='index').stack()
我得到如下输出
T1 0 INC1
1 INC2
2 INC3
T2 0 INC2
1 INC4
2 INC5
T3 0 INC2
dtype: object
现在我想通过比较 dic1 的键值对来连接 dic2 ..并且我期望输出如下
T1 0 INC1 LOC1
1 INC2 LOC2
2 INC3 LOC3
T2 0 INC2 LOC2
1 INC4 None
2 INC5 Nnoe
T3 0 INC2 LOC2
dtype: object
我尝试使用以下代码,它说列表不可迭代,我尝试使用 for 循环,但没有成功。
result = {k:dic2[v] for k, v in dic1.items()}
df_2 = pd.DataFrame.from_dict(result , orient='index').stack()
Final_result = pd.concat([df_1, df_2], axis=1)
您能帮我实现同样的目标吗?提前致谢!!
最佳答案
您可以使用map
,然后转换为框架(to_frame
)并分配
一列:
out = df_1.to_frame('col1').assign(col2=df_1.map(dic2))
print(out)
col1 col2
T1 0 INC1 LOC1
1 INC2 LOC2
2 INC3 LOC3
T2 0 INC2 LOC2
1 INC4 None
2 INC5 None
T3 0 INC2 LOC2
关于python - 从列表字典创建并连接数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65552972/