[英]How to fix (what I think is) an encoding issue when exporting python dictionary to .csv file using pandas DataFrame?
[英]Python converting dictionary to dataframe and exporting it to a csv file
我正在嘗試將字典轉換為 dataframe,然后將其導出到 csv 文件,但由於某種原因,當程序導出 dataframe 時,它會更改列和行。
df = pd.read_csv('test.csv')
for i in range(len(df['name'])):
names.append(df['name'][i])
balances.append(df['balance'][i])
def acc_creation(name):
names.append(name)
dict = {'name': names, 'balance': balances}
new_df = pd.DataFrame.from_dict(
dict, orient='index', columns=['name', 'balance'])
new_df.to_csv('test.csv', encoding='utf-8', sep=',',
header=False, na_rep=0, index=True)
然后它停止工作,這是我得到的錯誤:
Traceback (most recent call last):
File "/Users/darkmbs/Desktop/python/test.py", line 9, in <module>
balances.append(df['balance'][i])
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/frame.py", line 3024, in __getitem__
indexer = self.columns.get_loc(key)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/core/indexes/base.py", line 3082, in get_loc
raise KeyError(key) from err
KeyError: 'balance'
我想要的 output:
name,balance
xyzz,0
abc,0
output 我得到:
name,xyzz,abcd
balance,0,0
您面臨的問題是names
和balances
有不同的長度。 當您調用acc_creation(name)
時,您向names
( names.append(name)
)添加了一個額外的元素,但沒有添加到balance
,因此存在長度不匹配。 你可以做的是:
import pandas as pd
import numpy as np
def acc_creation(name):
names.append(name)
balances.append(0) # Or any value
new_df = pd.DataFrame(np.column_stack([names, balances]),
columns=['name', 'balance'])
new_df.to_csv('test.csv', encoding='utf-8', sep=',',
header=True, na_rep=0, index=True)
我相信你只是刪除:
orient='index',
如果您收到該錯誤消息,請讓我們查看一些原始 csv,以便我們對其進行測試並了解原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.