Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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 使用Pandas添加组件(如果不存在)_Python_Pandas_Dataframe_Psychopy - Fatal编程技术网

Python 使用Pandas添加组件(如果不存在)

Python 使用Pandas添加组件(如果不存在),python,pandas,dataframe,psychopy,Python,Pandas,Dataframe,Psychopy,我正在使用Pandas with PsychoPy在数据帧中对结果进行重新排序。问题是,数据帧将根据参与者的性能而变化。但是,我希望有一个公共数据框,其中不存在的列被创建为空。然后,列必须在输出文件中按特定顺序排列 假设我有一个来自参与者的数据帧,其中包含以下列: x = ["Error_1", "Error_2", "Error_3"] 我希望最终的数据帧如下所示: x = x[["Error_1", "Error_2", "Error_3", "Error_4"]] 其中“Error_4

我正在使用Pandas with PsychoPy在数据帧中对结果进行重新排序。问题是,数据帧将根据参与者的性能而变化。但是,我希望有一个公共数据框,其中不存在的列被创建为空。然后,列必须在输出文件中按特定顺序排列

假设我有一个来自参与者的数据帧,其中包含以下列:

x = ["Error_1", "Error_2", "Error_3"]
我希望最终的数据帧如下所示:

x = x[["Error_1", "Error_2", "Error_3", "Error_4"]]
其中
“Error_4”
被创建为空列

我试着用这样的方法(根据另一个问题改编):

原则上,这应该是可行的,但是我还有差不多70个专栏要做这件事,而且对每一个专栏都这样做似乎并不实际

你有什么建议吗

我还尝试创建一个包含所有可能列的新数据框,例如:

y = ["Error_1", "Error_2", "Error_3", "Error_4"]
但是,我仍然不清楚如何合并数据帧
x
y
跳过具有相同标题的列

使用:


谢谢你的回复,我按照你的建议做了修改。我把它贴在这里,因为它可能对其他人有用

首先,我创建一个数据帧
y
,因为我希望我的输出看起来像:

y = ["Error_1", "Error_2", "Error_3", "Error_4", "Error_5", "Error_6"]
然后,我获取实际输出文件
df
,并将其修改为
df2
,将
y
的所有列以完全相同的顺序添加到该文件中

df = pd.DataFrame(myData)
columns = df.columns.values.tolist() 
df2 = df.reindex(columns = y, fill_value='')
在这种情况下,在
df2
中不存在但在
y
中存在的所有列都将添加到
df2

然而,让我们假设在
df2
中有一列
“Error_7”
y
中不存在。为了跟踪这些列,我正在应用
merge
并创建一个新的数据帧
df3

df3 = pd.merge(df2,df)
df3.to_csv(filename+'UPDATED.csv')
缺少的列将添加到数据帧的末尾

如果您认为此过程可能有缺点,或者有其他方法,请告诉我:)

x=x.reindex([*x.columns].append(“Error_4”)、axis=1、fill_value='')
df = pd.DataFrame(myData)
columns = df.columns.values.tolist() 
df2 = df.reindex(columns = y, fill_value='')
df3 = pd.merge(df2,df)
df3.to_csv(filename+'UPDATED.csv')