我正在使用pandas读取excel文件。我想从原始数据帧创建多个数据帧。每个数据帧名称应为第1行标题。另外,如何在每个事务之间跳过一列
预期结果:
transaction_1:
name id available capacity completed all
transaction_2:
name id available capacity completed all
transaction_3:
name id available capacity completed all
我尝试的是:
import pandas as pd
import pprint as pp
pd.options.display.width = 0
pd.options.display.max_columns = 999
pd.options.display.max_rows = 999
df = pd.read_excel(r'capacity.xlsx', sheet_name='Sprint Details', header=0)
df1 = df.iloc[:, 0:3]
print(df1)
您可以尝试以下方法(与
pd.__version__ == 1.1.1
一起使用):本质上,我们需要将工作表作为具有多索引的数据帧读入。前两行是我们的列名
header=[0,1]
。而前两列是我们的索引,将用于每个“子表”index_col=[0,1]
因为每个表中都有空格,所以我们将有完全为
NaN
的列,所以我们将删除带有.dropna(axis=1, how="all")
的列因为pandas不希望索引名和列在同一行中,所以它应该错误地将索引列名
["name", "id"]
解析为第二级列index
的名称。为了解决这个问题,我们可以手动分配正确的索引名,同时通过rename_axis(index=["name", "id"], columns=[None, None])
删除列索引名现在我们有了一个具有
MultiIndex
列的格式良好的表,我们可以简单地将每个表切掉,并对每个表调用.reset_index()
,以确保每个表中都有"name"
和"id"
列编辑:看来我们的熊猫版本在语法分析上有所不同
选项1。 如果可以直接修改excel工作表以包含另一行(以便更好地将列与索引名分开)。这将提供最可靠的结果。
以下代码起作用:
选项2
如果您不能修改excel文件,很遗憾,我们需要一种更迂回的方法
相关问题 更多 >
编程相关推荐