我有一个堆积表的excel文件,在Pandas中看起来像这样:
d = {'col1': ['flow', 'A', 'B', 'C', 'handle', 'bs', 'cd', 'fg'],
'vals': [np.nan, 1, 2, np.nan, np.nan, 4, np.nan, 6]}
df = pd.DataFrame(d)
在总行中,我们有一个定义的字段,类似于一个小表的标题(此处为流和句柄)。
我想将标题和标题下的行放在单独的词典中。我的想法是使用标题(流和句柄)的名称创建索引列,然后使用pd.groupby()
创建dict
。 (假设我已经知道header_name = [flow, handle]
什么是达到我的目标并获得数据框架的最佳方法?
idx = ['flow', 'flow', 'flow', 'flow', 'handle', 'handle', 'handle', 'handle']
df.index = idx
df
答案 0 :(得分:2)
IIUC,您可以执行以下操作:
header_name = ['flow', 'handle']
df.index=df.col1[df.col1.isin(header_name)].reindex(df.index).ffill()
print(df.rename_axis(None))
col1 vals
flow flow NaN
flow A 1.0
flow B 2.0
flow C NaN
handle handle NaN
handle bs 4.0
handle cd NaN
handle fg 6.0