熊猫模块导出,拆分数据

时间:2020-09-30 07:42:19

标签: python python-3.x pandas

我试图读取.txt文件并输出每个有效字母的计数,但是,我无法以特定方式将数据导出到.csv。

一段代码:

freqs = {}
with open(Book1) as f:
    for line in f:
        for char in line:
            if char in freqs:
                freqs[char] += 1
            else:
                freqs[char] = 1

print(freqs)

为了导出到csv,我执行了以下操作:

test = {'Book 1 Output':[freqs]}

df = pd.DataFrame(test, columns=['Book 1 Output'])

df.to_csv(r'book_export.csv', sep=',')

当前,当我运行它时,导出看起来像这样(手动完成):

enter image description here

但是我希望输出是每一行,所以当我打开它时,它应该看起来像这样:

我希望它将“:”和“,”分成3个不同的列。

我在这里尝试了其他各种答案,但是大多数都以ValueErrors结尾,所以也许我只是不知道如何像下一个那样应用它。

df[[',']] = df[','].str.split(expand=True)

1 个答案:

答案 0 :(得分:2)

DataFrame.from_dictDataFrame.rename_axis一起使用来设置索引名称,然后csv看起来就像您所需要的:

#sample data
freqs = {'a':5,'b':2}


df = (pd.DataFrame.from_dict(freqs, orient='index',columns=['Book 1 Output'])
        .rename_axis('Letter'))
print (df)
        Book 1 Output
Letter               
a                   5
b                   2

df.to_csv(r'book_export.csv', sep=',')

或者使用Series

s = pd.Series(freqs, name='Book 1 Output').rename_axis('Letter')
print (s)
Letter
a    5
b    2
Name: Book 1 Output, dtype: int64

s.to_csv(r'book_export.csv', sep=',')

编辑:

如果有多个频率更改DataFrame构造函数:

freqs = {'a':5,'b':2}
freqs1 = {'a':9,'b':3}

df = pd.DataFrame({'f1':freqs, 'f2':freqs1}).rename_axis('Letter')
print (df)
        f1  f2
Letter        
a        5   9
b        2   3