gpt4 book ai didi

python - 按照特定模式从列中提取字符串

转载 作者:行者123 更新时间:2023-12-01 01:56:37 24 4
gpt4 key购买 nike

请原谅我的 Pandas 新手问题,但我有一个美国城镇和州的专栏,如下所示的截断版本(出于某种奇怪的原因,该专栏的名称称为“阿拉巴马[编辑]”,它与列中前 0-7 个城镇值):

0                          Auburn (Auburn University)[1]
1 Florence (University of North Alabama)
2 Jacksonville (Jacksonville State University)[2]
3 Livingston (University of West Alabama)[2]
4 Montevallo (University of Montevallo)[2]
5 Troy (Troy University)[2]
6 Tuscaloosa (University of Alabama, Stillman Co...
7 Tuskegee (Tuskegee University)[5]
8 Alaska[edit]
9 Fairbanks (University of Alaska Fairbanks)[2]
10 Arizona[edit]
11 Flagstaff (Northern Arizona University)[6]
12 Tempe (Arizona State University)
13 Tucson (University of Arizona)
14 Arkansas[edit]
15 Arkadelphia (Henderson State University, Ouach...
16 Conway (Central Baptist College, Hendrix Colle...
17 Fayetteville (University of Arkansas)[7]
18 Jonesboro (Arkansas State University)[8]
19 Magnolia (Southern Arkansas University)[2]
20 Monticello (University of Arkansas at Monticel...
21 Russellville (Arkansas Tech University)[2]
22 Searcy (Harding University)[5]
23 California[edit]

每个州的城镇位于每个州名称下方,例如费尔类克斯(列值 9)是阿拉斯加州的一个城镇。

我想要做的是根据州名称拆分城镇名称,以便我有两列“State”和“RegionName”,其中每个州名称与每个城镇名称相关联,如下所示:

                            RegionName                       State
0 Auburn (Auburn University)[1] Alabama
1 Florence (University of North Alabama) Alabama
2 Jacksonville (Jacksonville State University)[2] Alabama
3 Livingston (University of West Alabama)[2] Alabama
4 Montevallo (University of Montevallo)[2] Alabama
5 Troy (Troy University)[2] Alabama
6 Tuscaloosa (University of Alabama, Stillman Co... Alabama
7 Tuskegee (Tuskegee University)[5] Alabama

8 Fairbanks (University of Alaska Fairbanks)[2] Alaska

9 Flagstaff (Northern Arizona University)[6] Arizona
10 Tempe (Arizona State University) Arizona
11 Tucson (University of Arizona) Arizona

12 Arkadelphia (Henderson State University, Ouach... Arkansas

。 。 。ETC。

我知道每个州名称后面都有一个字符串“[edit]”,我假设我可以用它来分割和分配城镇名称。但我不知道该怎么做。

此外,我知道还需要进行许多其他数据清理,例如删除括号内和方括号“[]”内的字符串。这可以稍后完成...重要的部分是将州和城镇分开并将每个城镇分配给其适当的美国。任何建议将不胜感激。

最佳答案

在没有太多上下文或无法访问您的数据的情况下,我会提出类似的建议。首先,修改读取数据的代码:

df = pd.read_csv(..., header=None, names=['RegionName']) 
# add header=False so as to read the first row as data

现在,使用 str.extract 提取州名称,这应该只提取名称后跟子字符串“[edit]”的名称。然后,您可以使用 ffill 向前填充所有 NaN 值。

df['State'] = df['RegionName'].str.extract(
r'(?P<State>.*)(?=\s*\[edit\])'
).ffill()

关于python - 按照特定模式从列中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50107276/

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