在阅读这篇article的时候,我偶然发现了这句话。
order_total = df.groupby('order')["ext price"].sum().rename("Order_Total").reset_index()
字符串
除了reset_index()
方法调用,其他的一切对我来说都很清楚。我的问题是,如果我不调用reset_index()
,考虑到下面给出的序列,会发生什么?
order_total = df.groupby('order')["ext price"].sum().rename("Order_Total").reset_index()
df_1 = df.merge(order_total)
df_1["Percent_of_Order"] = df_1["ext price"] / df_1["Order_Total"]
型
我试着从https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.reset_index.html中理解这个方法,但是不明白它是什么意思 reset the index of a restrame。
4条答案
按热度按时间hmae6n7t1#
一个简单的解释是;
reset_index()
获取当前索引,并将其放置在列'index'中。然后为数据集重新创建一个新的'线性'索引。字符串
kkbh8khc2#
重置索引将创建从0开始的索引,如果有任何列设置为索引,则将其删除。
字符串
reset_index()
之前的输出:型
reset_index()
之后的输出:型
svmlkihl3#
我认为这里更好的方法是使用
GroupBy.transform
作为新的Series
,其大小与由聚合值填充的原始DataFrame相同,因此merge
是不必要的:字符串
我的问题是,考虑到序列,如果我不调用reset_index()会发生什么?
这里是
reset_index()
之前的Series
,所以在reset_index
将Series
转换为2列DataFrame之后,第一列由索引名称调用,第二列由Series
名称调用。型
为什么在你的代码中需要2列DataFrame的原因是
merge
中没有参数。这意味着它通过两个DataFrame之间的公共列名的交集使用参数on
,这里是order
列。vawmfj5a4#
回答你的问题:
我的问题是,考虑到序列,如果我不调用reset_index()会发生什么?
你将有一个多索引,由你应用了group-by语句的键组成。例如,在你的例子中,“order”。具体到文章,两个数组的索引不同可能会导致错误的合并(在group-by语句之后完成)。
因此,需要重置索引来执行正确的合并。