gpt4 book ai didi

python - 使用 iterrows 更改行下面的所有值

转载 作者:行者123 更新时间:2023-12-01 09:07:42 27 4
gpt4 key购买 nike

我正在研究代表美国地区并包含州的 df。各州旁边有[编辑]。 2 个州之间的所有区域都属于上述州。我认为这应该可行,但由于某种原因它并没有改变 df 的值......知道这里发生了什么吗?你会怎么做?

这是 df

0                      Alabama[edit]
1 Auburn
2 Florence
3 Jacksonville
4 Livingston
5 Montevallo
6 Troy
7 Tuscaloosa
8 Tuskegee
9 Alaska[edit]
10 Fairbanks
11 Arizona[edit]
12 Flagstaff
13 Tempe
14 Tucson
15 Arkansas[edit]
16 Arkadelphia
17 Conway
18 Fayetteville
19 Jonesboro
20 Magnolia
21 Monticello
22 Russellville
23 Searcy
24 California[edit]
25 Angwin
26 Arcata
27 Berkeley
28 Chico
29 Claremont

这是我的解决方案,不改变 df:

df['state'] = 'replace this'
edit = '\[edit\]'
for index, row in df.iterrows():
if edit in row['RegionName']:
st = df.loc[index, ['RegionName']]
df.loc[index, ['RegionName']] = None
df.iloc[index:, 1] = st

最佳答案

假设您的列名称是 regions,您可以使用 str.extract:

df.assign(
state=df.region.str.extract(r'(.*?)\[edit\]').ffill()
).mask(df.region.str.endswith('[edit]')).dropna()

region state
1 Auburn Alabama
2 Florence Alabama
3 Jacksonville Alabama
4 Livingston Alabama
5 Montevallo Alabama
6 Troy Alabama
7 Tuscaloosa Alabama
8 Tuskegee Alabama
10 Fairbanks Alaska
12 Flagstaff Arizona
13 Tempe Arizona
14 Tucson Arizona
16 Arkadelphia Arkansas
17 Conway Arkansas
18 Fayetteville Arkansas
19 Jonesboro Arkansas
20 Magnolia Arkansas
21 Monticello Arkansas
22 Russellville Arkansas
23 Searcy Arkansas
25 Angwin California
26 Arcata California
27 Berkeley California
28 Chico California
29 Claremont California

如果您想保留您所在地区列中的州,只需删除掩码即可:

df.assign(
state=df.region.str.extract(r'(.*?)\[edit\]').ffill()
)

关于python - 使用 iterrows 更改行下面的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51913626/

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