基于多列条件替换熊猫中的NaN

Ninua

我希望你一切都好。

我需要帮助以对数据框执行复杂的“ NaN替换”。

根据其他列过滤的其他列值的模式,替换熊猫列中的NaN值的最佳方法是什么?

让我说明一下我的问题:

import random
import numpy as np
import pandas as pd
data = {'Region': [1,1,1,2,2,2,1,2,2,2,2,1,1,1,2,1], 'Country': ['a','a', 'a', 'a', 'a','a', 'a', 'a', 'b', 'b', 'b', 'b','b','b','b','b'], 'GDP' : [100,100,101,105,105,110,np.nan,np.nan,200,200,100,150,100,150,np.nan,np.nan]}
df = pd.DataFrame.from_dict(data)

df:

     Region Country GDP
0        1       a  100.0
1        1       a  100.0
2        1       a  101.0
3        2       a  105.0
4        2       a  105.0
5        2       a  110.0
6        1       a    NaN
7        2       a    NaN
8        2       b  200.0
9        2       b  200.0
10       2       b  100.0
11       1       b  150.0
12       1       b  100.0
13       1       b  150.0
14       2       b    NaN
15       1       b    NaN

我想用同一国家和地区的其他GDP值模式替换GDP列的nan值。

对于索引6的GDP列的NaN值,我希望将其替换为100(因为这是1区和a国的GDP值的模式)

所需的输出应如下所示:

    Region Country  GDP
0        1       a  100
1        1       a  100
2        1       a  101
3        2       a  105
4        2       a  105
5        2       a  110
6        1       a  100
7        2       a  105
8        2       b  200
9        2       b  200
10       2       b  100
11       1       b  150
12       1       b  100
13       1       b  150
14       2       b  200
15       1       b  150 

谢谢您的帮助,希望您过得愉快!

熊猫fillna允许填充其他系列的缺失值。因此,我们需要另一个系列,其中包含每个国家/地区在相应索引处的模式。

要获得此系列,我们可以使用Pandas的groupby().transform()操作。它对数据帧进行分组,然后将结果广播回原始形状。

如果我们mode按原样使用此操作,则会出现错误。模式可以返回多个值,从而防止熊猫将值广播回原始形状。因此,我们需要强制其返回单个值,因此只需选择第一个(或最后一个,或任意一个)即可。

df["GDP"].fillna(
    df.groupby(["Country", "Region"])["GDP"].transform(
        lambda x: x.mode()[0]
    )
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用熊猫替换基于不同条件的多列中的异常值?

来自分类Dev

基于熊猫中每列条件的按列值替换

来自分类Dev

根据条件用熊猫替换多列中的值

来自分类Dev

基于行选择的熊猫多列替换

来自分类Dev

熊猫多索引行和列:用匹配行中的值替换NaN

来自分类Dev

熊猫多索引行和列:用匹配行中的值替换NaN

来自分类Dev

根据熊猫中的日期条件,将一列的值替换为NaN

来自分类Dev

熊猫多列替换

来自分类Dev

基于列的文件中的条件替换

来自分类Dev

数据框熊猫(NaN列)中的条件和条件

来自分类Dev

用多列中的列均值替换NA和NaN

来自分类Dev

基于多列的熊猫排名

来自分类Dev

熊猫多指标基于其他列中的值减去

来自分类Dev

如何在熊猫中相互替换多列

来自分类Dev

熊猫数据框中基于列比较的条件累积和

来自分类Dev

基于多列的条件格式

来自分类Dev

熊猫检查多列的条件

来自分类Dev

R函数用于dplyr中基于多列的条件

来自分类Dev

熊猫,基于列值的条件列分配

来自分类Dev

如何使用熊猫在Excel的多列中使用相同条件(替换)?

来自分类Dev

如何用NaN替换熊猫中的值?

来自分类Dev

在熊猫中,用NaN替换连续的0

来自分类Dev

如何基于在熊猫数据框中具有NaN的现有列创建新列?

来自分类Dev

熊猫根据值替换多列的值

来自分类Dev

基于多列条件的新列

来自分类Dev

当另一列在熊猫中具有特定值时,用 NaN 替换列值

来自分类Dev

如何基于左相邻列中的值替换多列中的值

来自分类Dev

基于列条件的大熊猫

来自分类Dev

熊猫条件比较:基于多个列