我试图读取.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=',')
当前,当我运行它时,导出看起来像这样(手动完成):
但是我希望输出是每一行,所以当我打开它时,它应该看起来像这样:
我希望它将“:”和“,”分成3个不同的列。
我在这里尝试了其他各种答案,但是大多数都以ValueErrors
结尾,所以也许我只是不知道如何像下一个那样应用它。
df[[',']] = df[','].str.split(expand=True)
答案 0 :(得分:2)
将DataFrame.from_dict
与DataFrame.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