我通过将一个列中的值添加到创建该新列的列的索引中,创建了一个新列。但是,我的问题是,当我在示例列上实现代码时,代码工作正常,但是当我传递已经存在的数据框时,它将引发错误,“只能执行标量值的操作”。根据我发现的代码是dist,这就是为什么它会引发错误。
我尝试将数据框转换为字典或列表,但是没有运气。
df = pd.DataFrame({'Name': ['Sam', 'Andrea', 'Alex', 'Robin', 'Kia', 'Sia'], 'Age':[14,25,55,8,21,43], 'd_id_max':[2,1,1,2,0,0]})`
df['Expected_new_col'] = df.loc[df.index + df['d_id_max'].to_list, 'Age'].to_numpy()
print(df)
错误:只能执行标量值的操作。
这是我要实现此代码的数据框:
Weight Name Age 1 2 abs_max d_id_max
0 45 Sam 14 11.0 41.0 41.0 2
1 88 Andrea 25 30.0 -17.0 30.0 1
2 56 Alex 55 -47.0 -34.0 47.0 1
3 15 Robin 8 13.0 35.0 35.0 2
4 71 Kia 21 22.0 24.0 24.0 2
5 44 Sia 43 2.0 22.0 22.0 2
6 54 Ryan 45 20.0 0.0 20.0 1
答案 0 :(得分:1)
这样编写新列不会返回错误:
df.loc[df.index + df['d_id_max'], 'Age'].to_numpy()
编辑:
您应先将d_id_max
的格式设置为int
(或float
):
df['d_id_max'] = df['d_id_max'].astype(int)
答案 1 :(得分:0)
解决方案非常简单,因为出现了错误,因为d_id_max列的数据类型是对象类型,应该是浮点数或整数,所以我更改了数据类型,效果很好。