如何基于另一列的值在熊猫中创建列

时间:2019-11-08 13:30:11

标签: pandas

我通过将一个列中的值添加到创建该新列的列的索引中,创建了一个新列。但是,我的问题是,当我在示例列上实现代码时,代码工作正常,但是当我传递已经存在的数据框时,它将引发错误,“只能执行标量值的操作”。根据我发现的代码是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

2 个答案:

答案 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列的数据类型是对象类型,应该是浮点数或整数,所以我更改了数据类型,效果很好。