如何使用Pandas展开groupby表以使行重复

dkqlctbz  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(159)

我的数据按以下方式分组:
before
我想将待解组的 Dataframe 展开为一个表,如下图所示:
after
重复这些项目以获得更简单的表格的最佳方法是什么?
我已经尝试使用unstack,但我希望列保持不变,因为他们目前是。

qkf9rpyu

qkf9rpyu1#

有几种不同的方法来解释这些图像。
如果这是一个 Dataframe ,你已经聚合,这是什么在Pandas(它看起来像),你只是想显示重复的标签,我认为你只是在寻找一个.reset_index()
如果按to_excelto_csvto_markdown等导出,则标签将重复。
如果它是一个只有空值的excel表格,你需要使用ffill方法来填充na:
my_df["id"] = my_df["id"].fillna(method="ffill")
here is a similar answer
下面演示了代码在每个场景中的作用:

重置索引

>>> df
         a
id colb   
a  AA    1
   BB    2
b  CC    3
   DD    4
c  EE    5
   FF    6
d  GG    7
>>> 
>>> df.reset_index()
  id colb  a
0  a   AA  1
1  a   BB  2
2  b   CC  3
3  b   DD  4
4  c   EE  5
5  c   FF  6
6  d   GG  7

测试导出

>>> df
         a
id colb   
a  AA    1
   BB    2
b  CC    3
   DD    4
c  EE    5
   FF    6
d  GG    7
>>> df.to_csv("testing_if_labels_repeat.csv")
>>> pd.read_csv("testing_if_labels_repeat.csv")
  id colb  a
0  a   AA  1
1  a   BB  2
2  b   CC  3
3  b   DD  4
4  c   EE  5
5  c   FF  6
6  d   GG  7

如果源是具有空值的表

>>> df = pd.read_excel("table_file.xlsx")
>>> df
    id colb  cola
0    a   AA     1
1  NaN   BB     2
2    b   CC     3
3  NaN   DD     4
4    c   EE     5
5  NaN   FF     6
6    d   GG     7

>>> df["id"] = df["id"].fillna(method="ffill")
>>> df
  id colb  cola
0  a   AA     1
1  a   BB     2
2  b   CC     3
3  b   DD     4
4  c   EE     5
5  c   FF     6
6  d   GG     7
>>>

这有用吗,还是你想做点别的?

相关问题