Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将字典转换为dataframe并将其导出为csv文件_Python_Pandas_Dictionary - Fatal编程技术网

Python将字典转换为dataframe并将其导出为csv文件

Python将字典转换为dataframe并将其导出为csv文件,python,pandas,dictionary,Python,Pandas,Dictionary,我试图将字典转换为数据帧,然后将其导出为csv文件,但由于某些原因,当程序导出数据帧时,它会更改列和行 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 = {'n

我试图将字典转换为数据帧,然后将其导出为csv文件,但由于某些原因,当程序导出数据帧时,它会更改列和行

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'
我得到的输出:

name,xyzz,abcd   
balance,0,0

我相信你只是删除了:

 orient='index',

如果您收到该错误消息,请让我们查看一些原始csv,以便我们可以对其进行测试并了解原因。

您面临的问题是
名称和
余额的长度不同。调用
acc\u 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)

为什么要使用
pandas
?无论如何,不要使用
orient='index
,也不要使用
header=False
。请在将来提供一个。大部分代码与您的问题无关。当我不使用
orient='index'
时,我会出现以下错误:
ValueError:数组必须都是相同长度的
OK,那么它们必须是相同长度的。你肯定不想要
orient='index'
,你明白那是什么意思吗?这正是我删除
orient='index'
时你不想做的事情。我得到了这个错误:
ValueError:arrays必须都是相同的长度
打印dict并在这里发布请
{'name':['xyz','abc','ma'],'balance':[0,0]}
是的,我用你的方法修复了这个问题,它去掉了csv中的“名称”和“平衡”file@BilalSohail您的意思是“名称”和“余额”列名不显示在csv文件中?是的,它们不显示在csv文件中file@BilalSohail确定,然后将:header=False从new_df.更改为_csv(…)。检查更新
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)