【问题标题】:using .loc to assign values from another dataframe by index returns : ValueError: Must have equal len keys and value when setting with an iterable使用 .loc 通过索引从另一个数据帧中分配值返回: ValueError: Must have equal len keys and value when setting with an iterable
【发布时间】:2021-10-01 06:44:21
【问题描述】:

df_state_group:

Index State assigned_airport
4 Florida NaN
5 Florida NaN
6 Florida NaN
7 Florida NaN

df1:

Index State assigned_airport
0 Washington NaN
1 New York NaN
2 Illinois NaN
3 Texas NaN
4 Florida NaN
5 Florida NaN
6 Florida NaN
7 Florida NaN
8 Ohio NaN
9 Colorado NaN
10 Michigan NaN
11 Indiana NaN

df_airports:

Index airports
0 a
1 b
2 c
3 d
4 e
5 f

index_nearest_airport:

[3]

期望的结果:

df1:

Index State assigned_airport
0 Washington NaN
1 New York NaN
2 Illinois NaN
3 Texas NaN
4 Florida d
5 Florida d
6 Florida d
7 Florida d
8 Ohio NaN
9 Colorado NaN
10 Michigan NaN
11 Indiana NaN

df_state_group 是佛罗里达州 df1 的子集

我试过了:

df1.loc[df_state_group.index, 'assigned_airport'] = df_airports.loc[index_nearest_airport,'airports'].values

但我不断收到错误:ValueError: Must have equal len keys and value when setting with an iterable

【问题讨论】:

  • 我想你忘了在你的问题中添加 index_nearest_airport
  • @Anurag Dabas 就在最后一个df之前,值为[3]
  • 实际上您的值只有一个元素,但您分配的位置需要 4 个值。因此长度不匹配。
  • 对于 Python 3.9,我无法发表评论。您在 index_nearest_airport 中有单个元素。但是如果有更多的值,我不知道赋值的逻辑:/。

标签: python pandas indexing .loc


【解决方案1】:

这样就可以了:

(df1.assign(assigned_airport= 
     pd.DataFrame(np.repeat(df_airports.loc[index_nearest_airport,'airports'].values
     ,df_state_group.shape[0]), columns = ['assigned_airport'],index=df_state_group.Index)))

(df1.loc[df_state_group.Index, 'assigned_airport'] = 
     np.repeat(df_airports.loc[index_nearest_airport,'airports'].values,
     df_state_group.shape[0]))
Index State assigned_airport
0 Washington NaN
1 New York NaN
2 Illinois NaN
3 Texas NaN
4 Florida d
5 Florida d
6 Florida d
7 Florida d
8 Ohio NaN
9 Colorado NaN
10 Michigan NaN
11 Indiana NaN

【讨论】:

  • 非常感谢完美运行,顺便说一句,这与 python 3.9.6 更新有什么关系吗?因为以前的代码在我更新我的 python 版本之前可以正常工作,而且我注意到如果要分配的数组单个值不是 dtype = object
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 2019-11-24
  • 2018-09-18
  • 1970-01-01
  • 2016-07-07
  • 2021-03-17
  • 1970-01-01
相关资源
最近更新 更多