如何在不删除第一行的情况下将 header 添加到 DataFrame 中?

How do I add a header into a DataFrame without removing the first row?

因此,我正在尝试将 headers 添加到数据框而不删除第一行。

这是数据框

01/02/2022  Lorem   369,02
0    01/02/2022  Lorem   374,12
1    01/02/2022  Lorem  1149,49

当我尝试使用 df.columns 时,它删除了第一行和 return 这个

     Date                    Description                Value

0    01/02/2022               Lorem                     374,12
1    01/02/2022               Lorem                     1149,49

我也尝试过使用 df.MultiIndex,但是使用多索引时,当尝试向列表中添加列时出现错误“AttributeError: 'DataFrame' object has no attribute 'to_list'"

也尝试使用 df.iloc 但我无法让它与 df.query

一起使用
df.query('df.iloc[2] in @list_difference')

它return也是一个错误

现在解释一下我想做的是,比较来自不同数据帧的两列的值 并创建一个 .xlsx,其中包含第一个 DataFrame 中存在但第二个中不存在的值的行。我这样做是通过将特定列放入列表中并使用 For 循环遍历它们,然后使用 df.query 来过滤具有存储在“list_difference”

上的值的列表

正如@Ynjxsjmh 所评论的那样,当您使用 pd.read_csv.

阅读 table 时,最好设置 header=None

如果您已经阅读了 table,这里有一个 hacky 方法来完成您需要的操作,将 table 转置两次以利用 reset_index.

import pandas as pd

#create example df
df = pd.DataFrame({1:[2,3,4],'A':['B','C','D']})
print(df)
#   1  A
#0  2  B
#1  3  C
#2  4  D

#transpose, reset_index, transpose back, reset_index again
df = df.T.reset_index().T.reset_index(drop=True)

df.columns = ['nums', 'letters'] #rename the columns
print(df)
#  nums letters
#0    1       A
#1    2       B
#2    3       C
#3    4       D

您可以在读取 CSV 数据时设置自定义列headers。

df = pd.read_csv(csv_file, names = ['Date', 'Description', 'Value'])