根据单个列中的值向数据框列添加值

我有一个DataFrame每年的 kg/ha 值,其中列从 1950 年到 2015 年。第一列是gridcode_1从 1 到 4 的网格代码 ( )。每个网格代码都有一个特定的附加值,我想添加到 kg/ha 值其他列。


我试图通过 for 循环和正则表达式来解决它


for x in kilograms_dep2:

    if kilograms_dep2['gridcode_1'] == 1:

        kilograms[regex="[0-9]{4}"] + 2.7

    elif kilograms_dep2['gridcode_1'] == 2:

        kilograms_dep2[regex="[0-9]{4}"] + 16.04

    elif kilograms_dep2['gridcode_1'] == 3:

        kilograms_dep2[regex="[0-9]{4}"] + 2.7

    elif kilograms_dep2['gridcode_1'] == 4:

        kilograms_dep2[regex="[0-9]{4}"] + 0.75

但它只会导致语法错误。


这是数据框的前几个条目


 gridcode_1         1950_y         1951_y         1952_y         1953_y

          1    1477.273256    1477.273256    1477.273256    1477.273256

          2  523883.351859  523883.351859  523883.351859  523883.351859

          3    2698.864601    2698.864601    2698.864601    2698.864601

          4    6458.175014    6458.175014    6458.175014    6458.175014

所以gricode_1 = 1我想添加2.7,gridcode_1 = 2我想添加16.04等。


对于优雅的解决方案,我将不胜感激。


GCT1015
浏览 95回答 1
1回答

幕布斯6054654

columns_list  = list(df.columns)columns_list.remove('code')df.loc[(df['code'] == 1 ),columns_list] = df.loc[(df['code'] == 1),columns_list] + 2.7df.loc[(df['code'] == 2 ),columns_list] = df.loc[(df['code'] == 2),columns_list] + 16.04结果:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python