如何在Pandas数据框中将“印度”和“美国"以外的国家替换为”其他“?[duplicate]

ax6ht2ek  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(126)

此问题在此处已有答案

Pandas DataFrame: replace all values in a column, based on condition(8个答案)
How to filter Pandas dataframe using 'in' and 'not in' like in SQL(11个答案)
20小时前就关门了。
我有以下df

df = pd.DataFrame({
    'Q0_0': ["India", "Algeria", "India", "U.S.A", "Morocco", "Tunisia", "U.S.A", "France", "Russia", "Algeria"],
    'Q1_1': [np.random.randint(1,100) for i in range(10)],
    'Q1_2': np.random.random(10),
    'Q1_3': np.random.randint(2, size=10),
    'Q2_1': [np.random.randint(1,100) for i in range(10)],
    'Q2_2': np.random.random(10),
    'Q2_3': np.random.randint(2, size=10)
})

显示如下:
| | Q0_0|第1季度_1|第1季度-第2季度|第一季度-第三季度|第二季度_1|第二季度_2|第二季度至第三季度|
| - -|- -|- -|- -|- -|- -|- -|- -|
| 第0页|印度Name|二十一个|0.326856单位|第0页|五十一个|0.520506单位|第0页|
| 一个|阿尔及利亚Name|七个|0.504580单位|一个|四十三|0.953744单位|一个|
| 2个|印度Name|六十七|0.327273单位|一个|三十四|0.840453单位|一个|
| 三个| U.S.A |四十九|0.056478单位|第0页|六十七|0.309559单位|一个|
| 四个|摩洛哥|七十一|千分之七四三九一三|一个|七十六|0.240706单位|一个|
| 五个|突尼斯Name|三十一个|0.060707单位|一个|七十八|0.576598美元|第0页|
| 六个| U.S.A |二十五个|0.588239美元|一个|六十一|0.133856单位|一个|
| 七个|法国Name|九十九|0.991723美元|第0页|八十五|0.274825单位|一个|
| 八个|俄罗斯Name|九个|0.846950单位|一个|六十一|0.279948美元|一个|
| 九个|阿尔及利亚Name|七十九|0.176326单位|一个|七十八|0.88万1051|一个|
我需要将Q0_0列中除IndiaU.S.A以外的国家/地区更改为Òther

所需输出

Q0_0    Q1_1    Q1_2    Q1_3    Q2_1    Q2_2    Q2_3
0   India     21    0.326856    0   51  0.520506    0
1   Other      7    0.504580    1   43  0.953744    1
2   India     67    0.327273    1   34  0.840453    1
3   U.S.A     49    0.056478    0   67  0.309559    1
4   Other     71    0.743913    1   76  0.240706    1
5   Other     31    0.060707    1   78  0.576598    0
6   U.S.A     25    0.588239    1   61  0.133856    1
7   Other     99    0.991723    0   85  0.274825    1
8   Other     9 0.846950    1   61  0.279948    1
9   Other     79    0.176326    1   78  0.881051    1

我尝试使用pandas.series.str.replace(),但没有成功。
我们将非常感谢您的帮助,谢谢。

r8uurelv

r8uurelv1#

可以将pandas.Series.maskpandas.Series.fillna一起使用:

df["Q0_0"]= df["Q0_0"].mask(~df["Q0_0"].isin(["India", "U.S.A"])).fillna("Other")
#输出:
print(df)

    Q0_0  Q1_1      Q1_2  Q1_3  Q2_1      Q2_2  Q2_3
0  India    43  0.681795     0    36  0.772289     0
1  Other    85  0.695352     1    14  0.989219     1
2  India    69  0.684015     1    85  0.687373     0
3  U.S.A    10  0.175235     1    52  0.825989     1
4  Other    90  0.998192     0    59  0.482667     0
5  Other    27  0.723308     0    90  0.054042     1
6  U.S.A    38  0.973819     0    69  0.536380     1
7  Other    10  0.815710     1     2  0.134707     1
8  Other    38  0.238863     1     1  0.872125     1
9  Other    96  0.078010     0    84  0.650347     0
6pp0gazn

6pp0gazn2#

您可以用途:

df['Q0_0'] = df['Q0_0'].str.replace('Algeria', 'Other')

相关问题