UserWarning:Pandas 不允许通过新属性名称创建列

新手上路,请多包涵

我坚持使用我的熊猫脚本。

实际上,我正在处理两个 csv 文件(一个输入文件和另一个输出文件)。我想复制两列的所有行并进行计算,然后将其复制到另一个数据框(输出文件)。

列如下:

 'lat', 'long','PHCount', 'latOffset_1', 'longOffset_1','PH_Lat_1', 'PH_Long_1', 'latOffset_2', 'longOffset_2', 'PH_Lat_2', 'PH_Long_2', 'latOffset_3', 'longOffset_3','PH_Lat_3', 'PH_Long_3',  'latOffset_4', 'longOffset_4','PH_Lat_4', 'PH_Long_4'.

我想获取 ‘lat’ 和 ‘latOffset_1’ 列,进行一些计算并将其放入我已经创建的另一个新列(’PH_Lat_1’)中。

我的职能是:

 def calculate_latoffset(latoffset):  #Calculating Lat offset.
    a=(df2['lat']-(2*latoffset))
    return a

主要代码:

 for i in range(1,5):
        print(i)
        a='PH_lat_%d' % i
        print (a)
        b='latOffset_%d' % i
        print (b)
        df2.a = df2.apply(lambda x: calculate_latoffset(x[b]), axis=1)

由于列名仅相差 (1,2,3,4)。所以我想调用函数 calculate_latoffset 并一次性计算所有列的所有行(PH_Lat_1、PH_Lat_2、PH_Lat_3、PH_Lat_4)。

使用上面的代码时出现此错误:

 basic_conversion.py:46: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access
  df2.a = df2.apply(lambda x: calculate_latoffset(x[b]), axis=1)

是否可以 ?请帮忙

原文由 Bushra Ghazal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
1 个回答

只需使用 df2['a'] 而不是 df2.a

原文由 AaronDT 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题