【发布时间】:2018-08-13 18:55:52
【问题描述】:
问题:
我的数据框有多个列,其中包含按品牌分组的某些产品的信息。每个产品都有一些属性,在第 1 列、第 2 列等中表示。这些列各自捕获子列 min、max 和 all 中的附加信息。分组的方式是品牌和型号形成数据框的多索引
column 1 column 2 column 3
brand model min max all min max all min max all min max all
brand(1) model(1)
model(2)
model(3)
brand(2) model(1)
. model(2)
. model(3)
. .
brand(n)
我需要向这个数据框添加一个名为第 4 列的新列,它需要拥有相同的子列 min、max 和 all,并且必须是数据框的长度。
试过了:
以下代码创建一个与原始数据帧长度相同的数据帧,其中包含new_column 列及其各自的子列min、max 和all。
columns_to_add = pd.DataFrame(index= range(len(original_df.index)), columns = ["new_column","new_column","new_column"],["min","max","all"]])
original_df = original_df.append(columns_to_add)
但是,当我可视化我的原始数据框时,我似乎失去了我最初拥有的分组并得到了类似的东西。
column 1 column 2 column 3 new_column
min max all min max all min max all min max all
(brand(1),model(1))
(brand(1),model(2))
(brand(1),model(3))
(brand(2),model(1))
(brand(2),model(2))
(brand(2),model(3))
.
.
(brand(n),model(i))
.
1410 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1411 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1412 NaN NaN NaN NaN NaN NaN NaN NaN NaN
我不明白这些从 1410 开始的额外行是从哪里来的。我相信取消分组导致了这种情况,因此它用NaN填充了这些行。
问题:
- 有没有办法让我添加
new_column以保留分组? - 我可以对这些用
NaN填充的新行做些什么?
编辑:
[1] 我刚刚意识到我的原始数据框有 1440 行,而包含空行的新数据框有 2880 行长,换句话说,是原始数据框长度的两倍。是什么导致行数加倍?
[2] 如何在多索引数据帧上执行transform() 以保持 groupby?这将防止我的数据帧的行数增加一倍
【问题讨论】:
标签: python pandas dataframe multi-index