从数据框中删除顶部行。

12

我有一个看起来像这样的数据框:

         level_0              level_1 Repo Averages for 27 Jul 2018
0  Business Date           Instrument                           Ccy
1     27/07/2018  GC_AUSTRIA_SUB_10YR                           EUR
2     27/07/2018    R_RAGB_1.15_10/18                           EUR
3     27/07/2018    R_RAGB_4.35_03/19                           EUR
4     27/07/2018    R_RAGB_1.95_06/19                           EUR

我试图摆脱顶部行,只保留下面的内容。
   Business Date           Instrument         Ccy
0     27/07/2018  GC_AUSTRIA_SUB_10YR         EUR
1     27/07/2018    R_RAGB_1.15_10/18         EUR
2     27/07/2018    R_RAGB_4.35_03/19         EUR
3     27/07/2018    R_RAGB_1.95_06/19         EUR

我尝试使用 df.columns.droplevel(0),但没有成功,需要帮助。

1
你从哪里获取数据的?看起来是读取数据的问题。 - asongtoruin
如果您在问题中提供可运行的代码,您很可能会更快地得到答案。 - Dov Grobgeld
这是一个自动化文件,结构很奇怪。顶部行就像一个标题。因此,我必须读入所有内容,然后删除不需要的行。 - SBad
5
使用pd.read_csv('myfile', skiprows=1)来读取文件,跳过第一行。 - jeremycg
非常感谢。它运行良好。 - SBad
5个回答

7
您可以这样尝试:
df.columns = df.iloc[0]
df = df.reindex(df.index.drop(0)).reset_index(drop=True)
df.columns.name = None

输出:

  Business Date           Instrument  Ccy
0    27/07/2018  GC_AUSTRIA_SUB_10YR  EUR
1    27/07/2018    R_RAGB_1.15_10/18  EUR
2    27/07/2018    R_RAGB_4.35_03/19  EUR
3    27/07/2018    R_RAGB_1.95_06/19  EUR

6
你可以利用参数header在这里阅读有关pandas中header参数的更多信息)。
假设你有以下数据集。
df = pd.read_csv("Prices.csv")
print(df)

这将会输出

              0       1     2         3         4
0      DATA      SESSAO  HORA  PRECO_PT  PRECO_ES
1      1/1/2020  0       1     41,88     41,88   
2      1/1/2020  0       2     38,60     38,60   
3      1/1/2020  0       3     36,55     36,55 

只需像这样传递header = 0

df = pd.read_csv("Prices.csv", header=0)
print(df)

你将获得所需的内容

           DATA  SESSAO  HORA PRECO_PT PRECO_ES
0      1/1/2009  0       1     55,01    55,01  
1      1/1/2009  0       2     56,13    56,13  
2      1/1/2009  0       3     50,59    50,59  
3      1/1/2009  0       4     45,83    45,83  
4      1/1/2009  0       5     42,07    41,90 

1
这提供了一个可行的解决方案,附带清晰的说明和相关文档链接。谢谢! - Steve Whitmore

4
你可以尝试使用切片技术。 df = df[1:] 这将会移除你的数据框中的第一行。

即使回答被接受了,你是否在给定的示例上测试过它? - Joe
2
同意@Joe的观点,这个例子不起作用。 - Arun

1
df.drop(row_start, row_end)

这将有所帮助。

如果代码无法执行,请不要使用代码片段,而应该使用代码格式化。 - vlizana

0

我测试了jeremycg的评论。它非常好用且简洁明了。只是想让更多的人看到,所以再次分享:

my_df = pd.read_csv(r"C:\path\to\my\file.csv", skiprows = 1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接