我有一个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等。对于优雅的解决方案,我将不胜感激。
1 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
columns_list = list(df.columns)
columns_list.remove('code')
df.loc[(df['code'] == 1 ),columns_list] = df.loc[(df['code'] == 1),columns_list] + 2.7
df.loc[(df['code'] == 2 ),columns_list] = df.loc[(df['code'] == 2),columns_list] + 16.04
结果:
添加回答
举报
0/150
提交
取消