【发布时间】:2019-12-21 06:58:00
【问题描述】:
我正在尝试导入一个 txt 文件,其中列出了州和大学。我已经使用 defaultdict 导入 txt 并将其解析到我有一个列表的位置,其中大学附属于该州。然后如何将数据放入具有两列(State、RegionName)的 pandas 数据框中?到目前为止没有任何效果。
我构建了一个空数据框:
ut = pd.DataFrame(columns = {'State', 'RegionName'})
并尝试了几种不同的方法,但都没有奏效。
with open('ut.txt') as ut:
for line in ut:
if '[edit]' in line:
a = line.rstrip().split('[')
d[a[0]].append(a[1])
else:
b = line.rstrip().split(' ')
d[a[0]].append(b[0])
continue
这给了我一个很好的清单:
defaultdict(<class 'list'>, {'State': ['edit]', 'School', 'School2', 'School3', 'School4', 'School5', 'School6', 'School7', 'School8'],
edit] 是原始 txt 文件的一部分,表示一个状态。之后的一切都是学校所在的城镇。
我想构建一个不错的 2 列数据框,其中状态是左列,所有学校都在右列...
【问题讨论】:
-
我试过这个:df = pd.DataFrame([(k, v[1]) for k, v in d.items()], columns=['State', 'RegionName'] ) 但它给了我一个州和一所学校,然后跳到下一个州。如何遍历所有学校?
-
欢迎来到 SO!我建议您编辑您的问题以处理格式以使其更具可读性。查看how to format。
-
解决了:new_df = pd.DataFrame(df.RegionName.tolist(), index=df.State).stack() new_df = new_df.reset_index([0, 'State']) new_df .columns = ['State', 'RegionName']
-
感谢 technogeek1995 的编辑。下次改正。
标签: python pandas dataframe dictionary defaultdict