将 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 文件的同时完成所有操作。你想要:
- 跳过第一行:使用参数 skiprows=0
- 使用从 B 到 D 的列:使用参数 usecols="B:D"
- 使用第 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 查看 header
和 usecols
。
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 文件的同时完成所有操作。你想要:
- 跳过第一行:使用参数 skiprows=0
- 使用从 B 到 D 的列:使用参数 usecols="B:D"
- 使用第 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 查看 header
和 usecols
。