如果使用所有标量值,则必须传递索引?|熊猫



当我尝试这个代码时:

def exportData(name_ofData, description_ofData):#save data and write to file function
pd.DataFrame({'Date':dt.date.today(), 'Name': name_ofData, 'Description':description_ofData, 'Category':'1D'})
raw_data.to_csv(r'C:UserspeterDocumentscodingpythonprojectsIn progressNotesreviewStudyData.csv', mode='a', index=False, header=False)

出现此错误:

Traceback (most recent call last):
File "c:UserspeterDocumentscodingpythonprojectsIn progressNotesreviewnotesreview.py", line 23, in <module>
exportData('1', 2)
File "c:UserspeterDocumentscodingpythonprojectsIn progressNotesreviewnotesreview.py", line 8, in exportData
pd.DataFrame({'Date':dt.date.today(), 'Name': name_ofData, 'Description':description_ofData, 'Category':'1D'})
File "C:UserspeterAppDataLocalProgramsPythonPython310libsite-packagespandascoreframe.py", line 636, in __init__
mgr = dict_to_mgr(data, index, columns, dtype=dtype, copy=copy, typ=manager)
File "C:UserspeterAppDataLocalProgramsPythonPython310libsite-packagespandascoreinternalsconstruction.py", line 502, in dict_to_mgr
return arrays_to_mgr(arrays, columns, index, dtype=dtype, typ=typ, consolidate=copy)
File "C:UserspeterAppDataLocalProgramsPythonPython310libsite-packagespandascoreinternalsconstruction.py", line 120, in arrays_to_mgr
index = _extract_index(arrays)
File "C:UserspeterAppDataLocalProgramsPythonPython310libsite-packagespandascoreinternalsconstruction.py", line 664, in _extract_index
raise ValueError("If using all scalar values, you must pass an index")
ValueError: If using all scalar values, you must pass an index

为什么会发生这种情况?我所要做的就是在一个已有的csv中添加一个新行。非常感谢任何修复!

所有列值都是标量,例如:

df = pd.DataFrame({"A":1,"B":2})

将抛出

ValueError: If using all scalar values, you must pass an index

而这将工作

df = pd.DataFrame({"A":[1],"B":[2]})
print(df)
A  B
0  1  2

在您的情况下,这些都是标量(像第一种情况一样(

{'Date':dt.date.today(), 'Name': name_ofData, 'Description':description_ofData, 'Category':'1D'}

相反,做

pd.DataFrame({'Date':[dt.date.today()], 'Name': [name_ofData], 'Description':[description_ofData], 'Category':['1D']})

您绝对不需要熊猫。如果有引号或换行符,那么您可能需要进行一些引用。

def exportData(name_ofData, description_ofData):#save data and write to file function
with open(r'C:UserspeterDocumentscodingpythonprojectsIn progressNotesreviewStudyData.csv', 'a') as fd:
print(f"{dt.date.today()},{name_ofData},{description_ofData},1D", file=fd)

对于您的案例,最简单的方法可能是创建一个空的DataFrame,然后附加您的字典——您必须将ignore_index作为True传递,字典才能附加到数据帧:

df = pd.DataFrame()
df = df.append(your_python_dict, ignore_index=True)

最新更新