如何解决如何使用不在 Pandas 数据框中的特定条件对行进行分组?
关于 Pandas 的另一个问题。我有一个名为 df
的数据框,其中一列名为 age_year
,包含 20 到 70 岁不同年龄的人。我需要将所有这些年龄分为 4 组,然后根据所有这些人在数据框中的另一个标准进行可视化。但是,当我编写一个函数然后尝试将它应用于我的 groupby 方法时,它会抛出一个错误,说它不确定系列的值。有没有其他方法可以根据列中已有的一些数据形成分组标准?
def age_group(series):
if df["age_year"] < 40:
df["age_young"] = df["age_year"]
elif df["age_year"] >= 40 & df["age_year"] < 50:
df["age_40"] = df["age_year"]
elif df["age_year"] >= 50 & df["age_year"] < 60:
df["age_50"] = df["age_year"]
else:
df["age_60"] = df["age_year"]
df.groupby('age_year').pipe(age_group("age_year"))
解决方法
这是一种方法:
import pandas as pd
d1 = {'age_year': [10,11,40,42,60,62,50,55]}
df = pd.DataFrame(d1)
df['age_young'] = df.age_year[df['age_year'] < 40]
df['age_40'] = df.age_year[(40 <= df['age_year']) & (df['age_year'] < 50)]
df['age_50'] = df.age_year[(50 <= df['age_year']) & (df['age_year'] < 60)]
df['age_60'] = df.age_year[60 <= df['age_year']]
print(df)
输入:
age_year
0 10
1 11
2 40
3 42
4 60
5 62
6 50
7 55
输出:
age_year age_young age_40 age_50 age_60
0 10 10.0 NaN NaN NaN
1 11 11.0 NaN NaN NaN
2 40 NaN 40.0 NaN NaN
3 42 NaN 42.0 NaN NaN
4 60 NaN NaN NaN 60.0
5 62 NaN NaN NaN 62.0
6 50 NaN NaN 50.0 NaN
7 55 NaN NaN 55.0 NaN
说明:
-
df['age_year'] < 40
返回满足条件的bool
类型Series
,值为True
- 将此布尔系列作为索引传递给列,我们可以过滤该列的值,即
df.age_year[bool-series]
- 当有多个条件时,对两个结果都使用按位
&
运算,即(bool-series1) & (bool-series1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。