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

时间:2019-09-25 11:20:55

标签: python regex for-loop

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

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

gridcode_1

但这只会导致语法错误。

以下是数据框的前几个条目

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等。

感谢您提供的所有帮助,以寻求一种优雅的解决方案。

1 个答案:

答案 0 :(得分:1)

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

结果:

Result