【问题标题】:Substitute in column of dataframe if the integer values meet certain criteria [duplicate]如果整数值满足某些条件,则替换数据框的列[重复]
【发布时间】:2023-03-08 13:08:01
【问题描述】:

我需要将它们按在数据框上替换的特定年龄组进行分组,而不是在数字上使用 Age

import pandas as pd
# intialise data of lists. 
data = {'Name':['Tom', 'nick', 'krish', 'jack','Ann','James'], 
        'Age':[20, 21, 45, 58,34,60]} 
  
# Create DataFrame 
df = pd.DataFrame(data)

这是我尝试过的:

if df['Age'] < 20:
    df['Age']= df['Age'].replace([<20],'<20')

if df['Age'] >= 20 & >40:
    df['Age']= df['Age'].replace([>=20&<40],'>=20&<40')

if df['Age'] >=40:
    df['Age']= df['Age'].replace([>=40],'>=40')

【问题讨论】:

  • df['Age2'] = pd.cut(df['Age'], bins=[-np.inf, 20, 40, np.inf], labels=['&lt;20', '20-40', '&gt;=40'], right=False) 将在一行中完成。
  • 谢谢你好心的陌生人,就这样!
  • 糟糕,忘记在我之前的评论中添加 right=False 参数。但这会做到。如果有帮助,请考虑对重复帖子中的答案进行投票。

标签: python pandas dataframe


【解决方案1】:

使用np.select(setofconditions, matchingchoices)

import numpy as np
c1=df['Age'] < 20
c2=df['Age'].between(20,40)
c3=df['Age'] >=40
cond=[c1,c2,c3]
choice=['<20','>=20&<40','>=40']
df['agerange']=np.select(cond,choice)

     Name  Age  agerange
0    Tom   20  >=20&<40
1   nick   21  >=20&<40
2  krish   45      >=40
3   jack   58      >=40
4    Ann   34  >=20&<40
5  James   60      >=40

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多