使用Pandas对一列进行分组,并根据条件对多列中的值进行正向替换。

给定一个数据框如下。

   id city district  year  price
0   1   bj       cy  2018      8
1   1   bj       cy  2019      6
2   1   xd       dt  2020      7
3   2   sh       hp  2018      4
4   2   sh       hp  2019      3
5   2   sh       pd  2020      5

假设列中有错别字 citydistrict 的行数。year 列,即 2020,所以我想让groupby idffill 这些列用以前的值。

在Pandas中如何做到这一点?非常感谢。

所需的输出将是这样的。

   id city district  year  price
0   1   bj       cy  2018      8
1   1   bj       cy  2019      6
2   1   bj       cy  2020      7
3   2   sh       hp  2018      4
4   2   sh       hp  2019      3
5   2   sh       hp  2020      5

解决方案:

下面的代码可以用,但我不知道是不是最好的解决方案。

如果你有其他的,欢迎分享。谢谢。

df.loc[df['year'].isin(['2020']), ['city', 'district']] = np.nan
df[['city', 'district']] = df[['city', 'district']].fillna(df.groupby('id')[['city', 'district']].ffill())

出。

   id city district  year  price
0   1   bj       cy  2018      8
1   1   bj       cy  2019      6
2   1   bj       cy  2020      7
3   2   sh       hp  2018      4
4   2   sh       hp  2019      3
5   2   sh       hp  2020      5

给TA打赏
共{{data.count}}人
人已打赏
未分类

实施isalpha时遇到困难

2022-9-8 14:18:18

未分类

Numpy平均百分位数范围,例如:平均数(第25至50百分位数)?

2022-9-8 14:18:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索