我有以下 DataFrame,其中包含一个列,该列是字典项列表:
d = pd.DataFrame([
['Green', [{'Desc:': 'STERLING GREEN SO'}, {'Sec:': '01'}, {'Lot:': 'L0038'}, {'Block:': 'B0008'}]],
['Apply', [{'Desc:': 'STERLING GREEN SO'}, {'Sec:': '01'}, {'Lot:': 'L0038'}, {'Block:': 'B0008'}]],
['Range', [{'Desc:': 'STERLING GREEN SO'}, {'Sec:': '01'}, {'Lot:': 'L0038'}, {'Block:': 'B0008'}]],
['Peop', [{'Desc:': 'STERLING GREEN SO'}, {'Sec:': '01'}, {'Lot:': 'L0038'}, {'Block:': 'B0008'}]]
], columns=['Name', 'Legal Description'])
我想将它转换为一个简单的 DataFrame,如下所示:
d = pd.DataFrame([
['Green', 'STERLING GREEN SO', '01', 'L0038', 'B0008'],
['Apply', 'STERLING GREEN SO', '01', 'L0038', 'B0008'],
['Range', 'STERLING GREEN SO', '01', 'L0038', 'B0008'],
['Peop', 'STERLING GREEN SO', '01', 'L0038', 'B0008']
], columns=['Name', 'Legal Description', 'Desc', 'Sec', 'Lot', 'Block'])
最佳答案
IMO,理想的解决方案是向上游采取行动并获得格式正确的字典或数据框。
您的单键字典列表的问题是您必须合并它们。您可以为此使用字典理解并转换为系列:
d2 = d['Legal Description'].apply(lambda c:
pd.Series({next(iter(x.keys())).strip(':'):
next(iter(x.values())) for x in c})
)
然后连接到原始数据框:
d.drop(columns='Legal Description').join(d2)
输出:
Name Desc Sec Lot Block
0 Green STERLING GREEN SO 01 L0038 B0008
1 Apply STERLING GREEN SO 01 L0038 B0008
2 Range STERLING GREEN SO 01 L0038 B0008
3 Peop STERLING GREEN SO 01 L0038 B0008
关于python - 将包含字典列表的列更改为 DataFrame 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70488100/