python3根据条件修改数据框中的行

时间:2017-06-12 01:33:07

标签: python-3.x dataframe conditional rows

我的数据框类似于

A    B      C
1    4      x
2    8      y
3    7      z
4    12     y
5    10     b

我需要根据

之类的条件修改B列
if B <= 5 then B = 1
if B > 5 and B <= 10 then B = 2
if B > 10 and B < 15 then B = 3

以便我的数据框成为

A    B      C
1    1      x
2    2      y
3    2      z
4    3      y
5    2      b

我可以,如果我必须先添加一个新列,然后删除B列。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您应该使用apply函数来实现此目的。

def check(row):
    if (row['B']) <= 5:
        return 1
    elif (row['B'] > 5) and (row['B'] <= 10):
        return 2
    elif (row['B'] > 10) and (row['B'] <= 15):
        return 3

这些会将函数应用于每一行,然后您可以执行检查。

df['B'] = df.apply(check, axis = 1)

然后得到的DF看起来像:

A    B      C
1    1      x
2    2      y
3    2      z
4    3      y
5    2      b

提供更多文档here