我将文本文件读为行,其前几行如下所示:
['Alabama[edit]\n',
'Auburn (Auburn University)[1]\n',
'Florence (University of North Alabama)\n',
'Jacksonville (Jacksonville State University)[2]\n',
'Livingston (University of West Alabama)[2]\n',
'Montevallo (University of Montevallo)[2]\n',
'Troy (Troy University)[2]\n',
'Tuscaloosa (University of Alabama, Stillman College, Shelton State)[3][4]\n',
'Tuskegee (Tuskegee University)[5]\n',
'Alaska[edit]\n',
'Fairbanks (University of Alaska Fairbanks)[2]\n',
'Arizona[edit]\n',
'Flagstaff (Northern Arizona University)[6]\n',
'Tempe (Arizona State University)\n',
'Tucson (University of Arizona)\n',
我想构建一个数据框,其中一列中的状态和下一列中的城市。我这样做:
list = []
for line in file:
if '[edit]' in line:
state = line.split('[edit]')[0]
else:
if '(' in line:
region = line.split(' (')[0]
else:
region = line.split(' (')[0]
list.append([state,region])
df= pd.DataFrame(list, columns=["State", "RegionName"])
输出如下:
State RegionName
0 Alabama Auburn
1 Alabama Florence
2 Alabama Jacksonville
3 Alabama Livingston
4 Alabama Montevallo
我认为它工作正常,但我的问题是算法!我的意思是当读取第一行时,我们得到state = Alabama,no" else"部分执行,我们到达附加行,其中没有区域的状态必须添加到列表中,在这种情况下,我希望第一行没有任何区域,为了解决这个问题,我会使用如下行:
if region != '':
在追加行之前但是这样的行不是必需的,因为它工作正常! 我的理解是只有当州和地区都有价值时才会执行追加! 如果是这种情况,(我知道这听起来很奇怪),但我怎么知道追加功能背后的隐藏条件呢?就像手册中某处提到的那样?或者有一些我不了解熊猫功能的一般事情...... 我希望我的问题有道理! 谢谢