【发布时间】:2022-01-27 03:18:05
【问题描述】:
我有两个数据框,df1 有与数据相关联的月份和年份列,df2 有月份(以数字表示)作为标题,年份作为索引值。
然后,我尝试使用与 df2 中的月/年对应的适当值填充 df1 中的新列。我尝试过 .loc 函数,但不确定它是要填充一整列还是一次只返回一个值。
df1
| other data | month | year |
|---|---|---|
| xyz | 12 | 1966 |
| xyz | 1 | 1997 |
df2
| index | 1 | 2 | 3 | 4 | 5 | .... | 12 |
|---|---|---|---|---|---|---|---|
| 1929 | x | y | z | x | y | .... | z |
| 1930 | x | y | z | x | y | .... | z |
| ... | x | y | z | x | y | .... | z |
| 1966 | x | y | z | x | y | .... | z |
| 1997 | x | y | z | x | y | .... | z |
我希望像这样根据 df2 中的值向 df1 添加一个新列:
| other data | month | year | df2_value |
|---|---|---|---|
| xyz | 12 | 1966 | z |
| xyz | 1 | 1997 | x |
到目前为止,我一直在尝试这个:
df1['df2_value'] = df2.loc[df1['year'],df2['month']]
但我遇到了这个关键错误:
KeyError: "None of [Int64Index([12, 1, 2, 3, 2, 2, 3, 2, 4, 1, 1, 2, 3, 2, 1, 2, 2,\n
2, 2, 2, 12, 3, 1, 2, 12, 1, 2, 11, 3, 1, 2, 1, 3, 12,\n
4, 3, 2, 1, 3, 2, 11, 12, 10, 12, 2, 4, 3, 1, 4, 1, 1,\n
2, 3, 1, 2, 4, 2, 2, 2, 4, 2, 3, 12, 9, 12, 3, 2, 3,\n
1, 2, 3, 11, 11, 4],\n dtype='int64')] are in the [columns]"
我已将 df1 中的月份和年份列更改为对象类型而不是整数,但这并没有改变错误。这是我第一次尝试使用 .loc,所以可能会遗漏一些非常明显的东西,或者我可能需要使用完全不同的功能?
【问题讨论】:
标签: python pandas dataframe .loc