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..
发布于 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'])
https://stackoverflow.com/questions/53600239
复制相似问题