Python:将字典附加到熊猫数据框行
Posted
技术标签:
【中文标题】Python:将字典附加到熊猫数据框行【英文标题】:Python: append dictionary to pandas data frame row 【发布时间】:2022-01-06 04:14:24 【问题描述】:我有一本如下形式的字典:
'2018': 21.6, '2019': 29.0, '2020': 134.8
和以下形式的熊猫数据框
Index | Column1 | Column2 |
---|---|---|
Index1 | Name1 | URL1 |
Index2 | Name2 | URL2 |
Index3 | Name3 | URL3 |
我现在的目标是将字典附加到一个固定的行,比如带有 Index2 的行。结果数据框应该是:
Index | Column1 | Column2 | 2018 | 2019 | 2020 |
---|---|---|---|---|---|
Index1 | Name1 | URL1 | |||
Index2 | Name2 | URL2 | 21.6 | 29.0 | 134.8 |
Index3 | Name3 | URL3 |
之后,我想将相同形式的第二个和第三个字典附加到 Index: Index1 然后是 Index3 的行中。
用 python 最好的方法是什么?
【问题讨论】:
【参考方案1】:我认为最好首先通过索引和字典创建新的 DataFrame,然后通过 DataFrame.join
添加到原始数据帧:
d = '2018': 21.6, '2019': 29.0, '2020': 134.8
df = df.join(pd.DataFrame([d], index=['Index2']))
print (df)
Column1 Column2 2018 2019 2020
Index1 Name1 URL1 NaN NaN NaN
Index2 Name2 URL2 21.6 29.0 134.8
Index3 Name3 URL3 NaN NaN NaN
或者:
d = '2018': 21.6, '2019': 29.0, '2020': 134.8
df = df.join(pd.DataFrame.from_dict('Index2': d, orient='index'))
print (df)
Column1 Column2 2018 2019 2020
Index1 Name1 URL1 NaN NaN NaN
Index2 Name2 URL2 21.6 29.0 134.8
Index3 Name3 URL3 NaN NaN NaN
【讨论】:
【参考方案2】:如果您想以自定义顺序将数据插入数据框中,您可以试试这个:
import pandas as pd
df = pd.DataFrame(['col1': 'Name1', 'col2': 'URL1',
'col1': 'Name2', 'col2': 'URL2',
'col1': 'Name3', 'col2': 'URL3'],
index=['Index1','Index2','Index3'])
d2 = '2018': 21.6, '2019': 29.0, '2020': 134.8
d1 = '2018': 200, '2019': 29.0, '2020': 134.8
d3 = '2018': 500, '2019': 29.0, '2020': 134.8
df = df.join(pd.DataFrame([d2,d1,d3], index=['Index2','Index1','Index3']))
print (df)
输出:
col1 col2 2018 2019 2020
Index1 Name1 URL1 200.0 29.0 134.8
Index2 Name2 URL2 21.6 29.0 134.8
Index3 Name3 URL3 500.0 29.0 134.8
【讨论】:
以上是关于Python:将字典附加到熊猫数据框行的主要内容,如果未能解决你的问题,请参考以下文章
Python - 将字典列表附加到嵌套的默认字典时出现关键错误