首页 > 解决方案 > Pandas 用另一列中的值替换列中的值,但保留一些值

问题描述

因此,我将 Dataframe 列中的一些值替换为来自其他列的值,如下所示:

df['A'] = df.ffill(1)['B']

但是 A 列中有一些值我不想被替换并保持原样。

我想保留的值多次出现并且是一个字符串,所以也许有一种方法可以将 A 列中的所有内容替换为 B 列,但将值保留为特定的字符串?

示例:假设我的数据框看起来像这样,并且我想保留 A 列中的值 dog,然后将其余值(NaN 值除外)替换为 B 列中的值,我该怎么做。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': ['dog', 'cat', 'mouse', 'spider', 'fish', 'dog'],
                   'B': ['New York', 'London', np.nan, 'Berlin', np.nan, 
                         'Paris']})

结果应该如下所示:

df_result = pd.DataFrame({'A': ['dog', 'London', 'mouse', 'Berlin', 'fish', 
                                'Paris']})

提前感谢您的帮助:)

标签: python-3.xpandasdataframe

解决方案


国际大学联盟:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': ['dog', 'cat', 'mouse', 'spider', 'fish', 'dog'],
                   'B': ['New York', 'London', np.nan, 'Berlin', np.nan,
                         'Paris']})

df.loc[(~df["A"].str.contains("dog"))&(df["B"].notnull()),"A"] = df["B"]

print (df)
#
        A         B
0     dog  New York
1  London    London
2   mouse       NaN
3  Berlin    Berlin
4    fish       NaN
5     dog     Paris

推荐阅读