有没有一种方法可以根据另一列的值是否在python中随数字范围下降而填充一列?

时间:2019-05-05 12:57:07

标签: python loops dataframe

我正在处理数据表,我需要根据另一列的值属于哪个类创建一个新列。

这是原始表:

ID  sequence
AJ8    2
FT7    3
JU4    5
ER2    3
LI5    2
FR2    7
WS1    8
UG4    9

范围是2、3、4、6:首先; 1,5,0:秒;和7,8,9:第三。

我创建了变量

first  = ['2', '3', '4', '6']
second = ['1', '5', '0']
third  = ['7', '8', '9']

我想得到下表

ID  sequence    code
AJ8    2        FIRST
FT7    3        FIRST
JU4    5        SECOND
ER2    3        FIRST
LI5    2        FIRST
FR2    7        THIRD
WS1    8        THIRD
UG4    9        THIRD

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我将创建一个有条件地返回所需值的函数。

import pandas as pd

keys = ['AJ8', 'FT7', 'JU4', 'ER2', 'LI5', 'FR2', 'WS1', 'UG4']
values = [2, 3, 5, 3, 2, 7, 8, 9]

df = pd.DataFrame(list(zip(keys, values)), columns =['key', 'value'])

def get_new_column(df):
    if df['value'] in [2, 3, 4, 6]:
        return 'first'
    elif df['value'] in [1, 5, 0]:
        return 'second'
    elif df['value'] in [7, 8, 9]:
        return 'third'
    else:
        return ''

df['new'] = df.apply(get_new_column, axis=1)
print(df)

输出:

   key  value     new
0  AJ8      2   first
1  FT7      3   first
2  JU4      5  second
3  ER2      3   first
4  LI5      2   first
5  FR2      7   third
6  WS1      8   third
7  UG4      9   third

这里有更多examples