将defaultdict传递到df

时间:2019-08-14 17:28:54

标签: pandas dataframe defaultdict

我正在尝试导入其中列出州和大学的txt文件。我利用defaultdict导入txt并将其解析到我拥有大学附属州的列表的位置。然后,如何将数据放入具有两列(州,地区名称)的熊猫数据框?到目前为止,没有任何效果。

我用以下方法构建了一个空的数据框:

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列数据框,其中状态为左列,所有学校在右边...

1 个答案:

答案 0 :(得分:0)

考虑以下字典

data_dict = {"a": 1, "b": 2, "c": 3}

考虑到您要从该字典创建一个数据框并分别命名列 StateRegionName,以下将完成工作

data_items = data_dict.items()

data_list = list(data_items)

df = pd.DataFrame(data_list, columns = ["State", "RegionName"])

哪个会得到

[In]: print(df) 
[Out]:
  State  RegionName
0     a           1
1     b           2
2     c           3

如果在创建数据框时没有传递列的名称,考虑到列的名称为 ab,可以使用 pandas.DataFrame.rename 重命名列

df = df.rename(columns = {"a": "State", "b": "RegionName"})

如果目标只是读取具有这样结构的 txt 文件

column1 column2
1 2
3 4
5 6 

然后下面会做的工作

colnames=['State', 'RegionName'] 

df = pd.read_csv("file.txt", colnames, header=None) 

请注意,如果列的名称已经是您想要的名称,请使用以下内容

df = pd.read_csv("file.txt")