我已经看到了如何使用双索引,但我还没有看到如何使用两行的列标题。这可能吗?
例如,第1行是一系列重复的日期:2016年,2016年,2015年,2015
第2行是一系列重复的数据。美元销售额、单位销售额、美元销售额、单位销售额。
因此,每个“美元销售额”标题实际上都与上面一行中的日期相关联。
后续行是包含数据的单个项。
有没有一种方法可以做一个groupby
或一些方法,我可以有两个列标题?最终,我想排队的“美元销售”作为一个系列的日期,这样我就可以使一个漂亮的图表。不幸的是,有多个列之前的下一个“美元销售”值。(不仅仅是一个“单位销售额”列)。另外,如果我删除上面的日期行,就不会有“美元销售额”与每个日期相关联的链接。
3条答案
按热度按时间8zzbczxx1#
如果使用
pandas.read_csv()
或pandas.read_table()
,可以为header
参数提供一个索引列表,以指定要用于列标题的行。Python将在df.columns
中为您生成pandas.MultiIndex
:也可以使用两个以上的行或非连续行来指定列标题:
kxxlusnw2#
可以从行创建MultiIndex并将其分配为新的列标签。
例如,要进行以下转换,请使用
pd.MultiIndex.from_frame()
。也可以从旧的列标签和数据框行创建MultiIndex。例如,要进行以下转换,请使用
pd.MultiIndex.from_arrays()
。注意:需要注意的一件重要的事情是 Dataframe 的数据类型对于它所保存的数据来说可能并不理想;
astype(int)
等最终可能是必要的。此外,如果索引应该被重置,则可能需要
reset_index(drop=True)
。kmpatx3s3#
是的,在pandas中可以使用两行的列标题。您可以通过为列标题创建MultiIndex对象来实现这一点。MultiIndex是一个分层索引对象,它使您能够在pandas DataFrame中表示更高维的数据。
下面是一个如何使用MultiIndex创建具有两行列标题的DataFrame的示例:
这将输出一个带有两行列标题的DataFrame:
然后,您可以使用MultiIndex对象来选择和操作数据:
这将输出一个DataFrame,其中“Dollar Sales”列按日期求和:
然后,您可以使用此分组数据创建图表。
希望这能有所帮助!