使用Pandas添加不存在的逗号

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

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

x = ["Error_1","Error_2","Error_3"]

我希望最终的数据帧看起来像这样:

x = x[["Error_1","Error_3","Error_4"]]

其中"Error_4"被创建为空列的位置。

我尝试应用这样的内容(从另一个问题改编而成):

if "Error_4" not in x:
    x["Error_4"] = ""

x = x[["Error_1","Error_4"]]

原则上应该可以,但是我还有其他70个专栏应该做,而且似乎不适合每个专栏。

您有什么建议吗?

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

y = ["Error_1","Error_4"]

但是,我仍然不清楚如何合并具有相同标题的数据帧xy跳过列。

niuliang1023 回答:使用Pandas添加不存在的逗号

使用DataFrame.reindex

x = x.reindex(["Error_1","Error_2","Error_3","Error_4"],axis=1,fill_value='')
,

感谢您的回复,我按照您的建议进行了修改。我将其发布在这里,因为它可能对其他人有用。

首先,我要创建一个数据框y,因为我希望输出看起来像这样:

y = ["Error_1","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')

缺少的列将添加到数据框的末尾。

如果您认为此过程可能有缺点,或者有另一种方法可以解决,请告诉我:)

本文链接:https://www.f2er.com/3144382.html

大家都在问