【问题标题】:How to remplace NaN with conditions on a dataframe如何用数据框上的条件替换 NaN
【发布时间】:2022-01-07 14:46:25
【问题描述】:

我有这个dataframe,我想根据会员的面积来替换region列的NaN ...

df = pd.DataFrame({ 'area':['North America','Belgique','France','Angleterre','Asie','N Zelande','Italie'], 'region':['NA','Nan','Europe','Autres','Nan','Nan','Nan']})

地区

NA = 北美/

欧洲 = 法国、比利时、意大利、安格尔特雷/

Autres = N Zelande, Asie/

【问题讨论】:

  • 你试过.fillna()吗?
  • 请以表格/数据框的形式提供您想要的输出,以使您的问题更清晰。
  • 是的,我尝试了,但我没有成功

标签: python pandas dataframe loops for-loop


【解决方案1】:

这里是:

dict_of_areas={'NA':'North america','Belgique':'Europe'}
df.loc[df['region'].isnull(),'region']=df.loc[df['region'].isnull(),'area'].replace(dict_of_areas)

您可以使用dict_of_areas 将区域映射到区域。

【讨论】:

  • 感谢您的帮助,但我想用好的区域替换 NaN(没有字符串,抱歉)。例如,对于 area=Belgique 的 NaN,我想根据 Belgique 放置区域,例如欧洲,对于 area = Asie -> put Autres ...等的 NaN
  • sorry but no,因为您将区域的 NaN 替换为无条件的 area 值。在这种情况下,对于比利时,我想把欧洲而不是比利时,你明白我的意思吗?
  • @DAVID 是的。你的问题真的不清楚,我更新了我的答案。
  • 感谢您的帮助@Ony
  • @DAVID 当然,如果我的回答解决了您的问题,请将其标记为已接受的答案。
【解决方案2】:

这个你可以试试。它过滤 region 值,其中值是 NanNA 并分配 area 值到那个特定的 region

    df['region'][df['region'].isin(["Nan","NA"])]=df['area']

对我来说,它的输出如下。

area region
North America North America
Belgique Belgique
France Europe
Angleterre Autres
Asie Asie
N Zelande N Zelande
Italie Italie

这与您期望的输出相同吗?

【讨论】:

  • 不,我想将欧洲(地区)用于比利时,例如,欧洲用于意大利,Autre 用于亚洲等...
猜你喜欢
  • 2019-02-12
  • 2017-12-05
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
相关资源
最近更新 更多