【问题标题】:Is there a way to populate a column based on if the values of another column falls withing a range of numbers in python?有没有办法根据另一列的值是否落在 python 中的数字范围内来填充列?
【发布时间】:2019-09-23 07:42:42
【问题描述】:

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

这是原始表格:

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

我该怎么做?

【问题讨论】:

  • 你使用的是熊猫数据框吗?
  • 是的,我正在使用熊猫

标签: python loops dataframe


【解决方案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

【讨论】:

    猜你喜欢
    • 2023-02-10
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 2021-01-28
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多