PythonPandas。什么都没发生

2024-10-01 11:19:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为all_data的df,其中有一个名为“neighborry”的列。all_data["Neighborhood"].head()看起来像

0       CollgCr
1       Veenker
2       CollgCr
3       Crawfor
4       NoRidge

我想用0替换某些邻域名称,用1替换其他邻域名称以获取

0       1
1       1
2       1
3       0
4       1

所以我做了这个:

all_data["Neighb_Good"] = all_data["Neighborhood"].copy().replace({'Neighborhood': {'StoneBr': 1, 'NrdigHt': 1,
                                                                                    'Veenker': 1, 'Somerst': 1,
                                                                                    'Timber': 1, 'CollgCr': 1,
                                                                                    'Blmngtn': 1, 'NoRidge': 1,
                                                                                    'Mitchel': 1, 'ClearCr': 1,
                                                                                    'ClearCr': 0, 'Crawfor': 0,
                                                                                    'SawyerW': 0, 'Gilbert': 0,
                                                                                    'Sawyer': 0, 'NPkVill': 0,
                                                                                    'NAmes': 0, 'NWAmes': 0,
                                                                                    'BrkSide': 0, 'MeadowV': 0,
                                                                                    'Edwards': 0, 'Blueste': 0,
                                                                                    'BrDale': 0, 'OldTown': 0,
                                                                                    'IDOTRR': 0, 'SWISU': 0,
                                                                                    }})

它没有给我一个错误,但什么也没发生。相反,all_data["Neighb_Good"]看起来完全像all_data["Neighborhood"]。你知道吗

我已经想了一段时间了,我发誓我看不出是怎么回事,因为我昨天在其他一些专栏上也用了同样的方法,效果非常好。你知道吗


Tags: 名称dfdataallhead邻域goodneighborhood
2条回答

怎么样

A   B   C
P   0   1   2
Q   3   4   5
R   6   7   8
S   9   10  11
T   12  13  14
U   15  16  17

data1.A.replace({0:"A"..and so on})

更新:您似乎需要^{}

In [196]: df['Neighb_Good'] = df['Neighborhood'].map(d['Neighborhood'])

In [197]: df
Out[197]:
  Neighborhood  Neighb_Good
0      CollgCr            1
1      Veenker            1
2      CollgCr            1
3      Crawfor            0
4      NoRidge            1

使用来自注释的数据集:

In [201]: df["ExterQual_Good"] = df["ExterQual"].map(d)

In [202]: df
Out[202]:
  ExterQual  ExterQual_Good
0        TA               1
1        Fa               0
2        Gd               1
3        Po               0
4        Ex               1

旧答案:

如果有嵌套的dict,包含列名,请使用^{}而不是^{}

In [81]: df['Neighb_Good'] = df.replace(d)

In [82]: df
Out[82]:
  Neighborhood  Neighb_Good
0      CollgCr            1
1      Veenker            1
2      CollgCr            1
3      Crawfor            0
4      NoRidge            1

或者将^{}与平面(非嵌套dict)一起使用:

In [85]: df['Neighb_Good'] = df['Neighborhood'].replace(d['Neighborhood'])

In [86]: df
Out[86]:
  Neighborhood  Neighb_Good
0      CollgCr            1
1      Veenker            1
2      CollgCr            1
3      Crawfor            0
4      NoRidge            1

相关问题 更多 >