gpt4 book ai didi

python - 如果列表中有文本,则用值替换某些文本

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:57 25 4
gpt4 key购买 nike

我只是在快速了解 Pandas,无法解决一个问题。我有一份纽约州的县名单。如果该县是 5 个行政区之一,我想将县名更改为纽约,否则我就不管它了。以下给出了思路,但不正确。

编辑 - 因此,如果前几行的县列中的县在更改前是奥尔巴尼、阿勒格尼、布朗克斯,则更改后它们将是纽约州奥尔巴尼、阿勒格尼

# clean up county names
# 5 boroughs must be combined to New York City
# eliminate the word county
nyCounties = ["Kings", "Queens", "Bronx", "Richmond", "New York"]

nypopdf['County'] = ['New York' for nypopdf['County'] in nyCounties else
nypopdf['County']]

最佳答案

一个小模型:

In [44]: c = ['c', 'g']
In [45]: df = pd.DataFrame({'county': list('abccdefggh')})
In [46]: df['county'] = df['county'].where(~df['county'].isin(c), 'N')
In [47]: df
Out[47]: county
0 a
1 b
2 N
3 N
4 d
5 e
6 f
7 N
8 N
9 h

所以这是使用 pd.Series.where ~df['county'].isin(c) 选择不在列表 c 中的行(开头的 ~ 是'not' 操作),第二个参数是要替换的值(当条件为 False 时)。

为了适合你的例子:

nypopdf['County'] = nypopdf['County'].where(~nypopdf['County'].isin(nyCounties), 'New York')

nypopdf['County'].where(~nypopdf['County'].isin(nyCounties), 'New York', inplace=True)

完整示例:

nypopdf = pd.DataFrame({'County': ['Albany', 'Allegheny', 'Bronx']})
nyCounties = ["Kings", "Queens", "Bronx", "Richmond", "New York"]
print(nypopdf)
County
0 Albany
1 Allegheny
2 Bronx
nypopdf['County'].where(~nypopdf['County'].isin(nyCounties), 'New York', inplace=True)
print(nypopdf)
County
0 Albany
1 Allegheny
2 New York

关于python - 如果列表中有文本,则用值替换某些文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53023249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com