首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python pandas有两列: index和region。这个地区有州,然后在它的下面有城镇。我需要一个新的列来显示相应的状态

Python pandas有两列: index和region。这个地区有州,然后在它的下面有城镇。我需要一个新的列来显示相应的状态
EN

Stack Overflow用户
提问于 2018-12-04 03:05:06
回答 1查看 324关注 0票数 1
def get_list_of_university_towns():
with open('university_towns.txt', 'r') as f:
data = (line.rstrip() for line in f)
lines = list(line for line in data if line)
thing = [lines]     

indexx = [lines.index(line) for line in lines if '[edit]' in line]
numlist = [indexx]
wow = pd.DataFrame(thing)
tr = wow.T
tr.columns=['Region']

当我返回代码时,它会返回:

"""    Region
0   Alabama[edit]
1   Auburn (Auburn University)[1]
2   Florence (University of North Alabama)
3   Jacksonville (Jacksonville State University)[2]
4   Livingston (University of West Alabama)[2]
5   Montevallo (University of Montevallo)[2]
6   Troy (Troy University)[2]
7   Tuscaloosa (University of Alabama, Stillman Co...
8   Tuskegee (Tuskegee University)[5]
9   Alaska[edit]
10  Fairbanks (University of Alaska Fairbanks)[2]
11  Arizona[edit]
12  Flagstaff (Northern Arizona University)[6]
13  Tempe (Arizona State University)
14  Tucson (University of Arizona)
15  Arkansas[edit]
16  Arkadelphia (Henderson State University, Ouach...

如何获取它,以便创建一个名为state的新列,该列将状态名称附加到状态的相应索引之后?索引部分的作用是将相应的索引返回给所有状态。我本质上是想让它返回:

    Region    State
1   Auburn    Alabama
2   Florence  Alabama    etc..
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 03:18:20

您应该能够遍历这些行,并使用if-else来确定该行是州还是区域。这些州似乎都有[edit]标记,所以任何带有该标记的行都必须是一个州,否则它就是一个区域。

要创建数据帧本身,我们可以创建一个元组列表,第一个元素是state,第二个元素是region (在适当清理文本之后)。然后将列表传递给pandas,pandas将优雅地将其转换为数据帧。

一个潜在的解决方案(尽管我不确定您的文本文件到底是什么样子):

data = []
for line in lines:
    if '[edit]' in line:
        state = line.replace('[edit]', '')
    else:
        region = line.split(' (')[0]
        data.append((state, region))
df = pd.DataFrame(data, columns=['state', 'region'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53600239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档