将 Excel 格式化为 DataFrame

Formatting Excel to DataFrame

excel sheet snapshot

请看一下我在左上角附上的excelsheet快照。当我从这个 sheet 创建一个 DataFrame 时,我的第一列和第一行填充了 NaN。我需要跳过此空白行和列到 select 第二行和第二列以创建 DataFrame。

    Unnamed: 0  Unnamed: 1  Unnamed: 2  Unnamed: 3
0   NaN           ID           SCOPE       TASK
1   NaN           34            XX      something_1
2   NaN           534           SS      something_2
3   NaN           43            FF      something_3
4   NaN           32            ZZ      something_4

我希望我的 DataFrame 看起来像这样

0   ID         SCOPE       TASK
1   34          XX      something_1
2  534          SS      something_2
3   43          FF      something_3
4   32          ZZ      something_4

我试过这段代码,但没有得到我预期的结果

df = pd.read_excel("Book1.xlsx")
df.columns = df.iloc[0]
df.drop(df.index[1])
df.head()



    NaN ID  SCOPE      TASK
0   NaN ID  SCOPE      TASK
1   NaN 34  XX     something_1
2   NaN 534 SS     something_2
3   NaN 43  FF     something_3
4   NaN 32  ZZ     something_4

我仍然需要从这里删除第一列并将索引行设为 0。 有人可以帮忙吗?

如果您要删除整列,请尝试此操作 -

del df["name of the column"]

这是一个例子

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10,2),columns=['a','b']) 
# created a random dataframe 'df' with 'a' and 'b' as columns


del df['a'] # deleted column 'a' using 'del'  
print(df) # no column 'a' in 'df' now

您实际上可以在使用 pandas 阅读 excel 文件的同时完成所有操作。你想要:

  1. 跳过第一行:使用参数 skiprows=0
  2. 使用从 B 到 D 的列:使用参数 usecols="B:D"
  3. 使用第 2 行作为 header(我在这里假设):使用参数 header=1(0 索引)

答案:

df = pd.read_excel("Book1.xlsx", skiprows=0, usecols="B:D", header=1)

编辑: 使用 header 时甚至不需要使用 skiprows。

df = pd.read_excel("Book1.xlsx", usecols="B:D", header=1)

使用header参数指定数据帧的header(列名)行号;在你的情况下它是 1。此外,使用 usecols 参数指定列名,在你的情况下,它们是 'ID'、'SCOPE' 和 'TASK'.

df = pd.read_excel('your_excel_file.xlsx', header=1, usecols=['ID','SCOPE', 'TASK'])

here 查看 headerusecols