python - 从列表字典创建并连接数据框

标签 python python-3.x pandas dictionary

我有两本如下的字典

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/

相关文章:

python - 新手 - 具有多个应用程序的 Django 项目 - 无法渲染 View

python - 如何在python中获取对象的属性

python - 选择过去 X 个月的数据

python - 使用具有空列表属性的 pandas.io.json.json_normalize()

python - 如何在 DataFrame 的一列中添加 DataFrame

python - 这个字符 - ㎜ - 引发 UnicodeEncodeError

python - str.maketrans 在交互式 python 中可用,但在 python 脚本中不可用?

Python Eve patch_internal设置etag

python - 多个连接到套接字时的 recvfrom() 行为

python - 当我安装了 2 个不同的 Python 版本时安装 Pygame