使用assign方法创建列

2024-06-02 09:15:06 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据帧:

^{tb1}$

我想创建一个基于列a的新列,并根据列a的值创建组

df = pd.DataFrame([['1', 3],['2', 5],['3', 20],['4',8],['5',7],['6',13],['7',33],['8',2]], columns=['index', 'A'])
df['groups'] =  df['A'].apply(lambda x: 'high' if x>15 else 'medium' if 15>=x>10 else 'low')

如何使用assign执行相同的操作

df = df\
.assign(groups = ?)

Tags: columns数据lambdadataframedfindexifelse
2条回答

使用assign()方法:

df=df.assign(groups =df['A'].apply(lambda x: 'high' if x>15 else 'medium' if 15>=x>10 else 'low'))

value=df['A'].apply(lambda x: 'high' if x>15 else 'medium' if 15>=x>10 else 'low')
df=df.assign(groups=value)

现在,如果您打印df,您将获得所需的输出:

#output

    index   A   groups
0   1       3   low
1   2       5   low
2   3       20  high
3   4       8   low
4   5       7   low
5   6       13  medium
6   7       33  high
7   8       2   low

编辑:您也可以通过以下方式进行编辑:

result=pd.read_csv(file).assign(groups=pd.read_csv(file)['A'].apply(lambda x: 'high' if x>15 else 'medium' if 15>=x>10 else 'low'))

您可以在这里使用^{}为具有多个条件的情况提供更有效的方法assign只是一个添加新列的方法,也可以使用panda的索引方法来完成

import numpy as np
df.assign(groups=np.select([df.A>15, (df.A<=15)&(df.A>10)],
         ['high','medium'], 'low'))

  index   A  groups
0     1   3     low
1     2   5     low
2     3  20    high
3     4   8     low
4     5   7     low
5     6  13  medium
6     7  33    high
7     8   2     low

相关问题 更多 >