Python 使用Pandas添加组件(如果不存在)
我正在使用Pandas with PsychoPy在数据帧中对结果进行重新排序。问题是,数据帧将根据参与者的性能而变化。但是,我希望有一个公共数据框,其中不存在的列被创建为空。然后,列必须在输出文件中按特定顺序排列 假设我有一个来自参与者的数据帧,其中包含以下列: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
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')