【问题标题】:How to merge cells partially along with vertical direction in pandas如何在熊猫中沿垂直方向部分合并单元格
【发布时间】:2021-08-11 01:54:30
【问题描述】:

我有以下数据框。

index Flag Data
0 1 aaaa
1 0 bbbb
2 0 cccc
3 0 dddd
4 1 eeee
5 0 ffff
6 1 gggg
7 1 hhhh
8 1 iiii

我想获得由 Flag 1 分隔的垂直 Mergedata

index Flag Data Mergedata
0 1 aaaa aaaabbbbccccdddd
1 0 bbbb -
2 0 cccc -
3 0 dddd -
4 1 eeee eeeeffff
5 0 ffff -
6 1 gggg gggg
7 1 hhhh hhhh
8 1 iiii iiii

也许,我可以用 FOR LOOP 做到这一点。

不过,我相信 pandas 提供的解决方案比上面的更聪明。

/////////////////////////////////////// //////////////////////p>

后记01

对不起。 我无法得到上述结果。

import numpy as np
import pandas as pd

Array01 = np.array([[0, 1, 'aaaa'],
                 [1, 0, 'bbbb'],
                 [2, 0, 'cccc'],
                 [3, 0, 'dddd'],
                 [4, 1, 'eeee'],
                 [5, 0, 'ffff'],
                 [6, 1, 'gggg'],
                 [7, 1, 'hhhh'],
                 [8, 1, 'iiii']])

df = pd.DataFrame(data=Array01,columns=['index', 'Flag', 'Data'])
df.loc[df.Flag==1,'newmerge'] = df.groupby(df.Flag.cumsum())['Data'].sum().values

df

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我们只需要cumsum 标志来获取groupby 密钥

    df.loc[df.Flag==1,'newmerge'] = df.groupby(df.Flag.cumsum())['Data'].sum().values
    df
    Out[47]: 
       index  Flag  Data          newmerge
    0      0     1  aaaa  aaaabbbbccccdddd
    1      1     0  bbbb               NaN
    2      2     0  cccc               NaN
    3      3     0  dddd               NaN
    4      4     1  eeee          eeeeffff
    5      5     0  ffff               NaN
    6      6     1  gggg              gggg
    7      7     1  hhhh              hhhh
    8      8     1  iiii              iiii
    

    【讨论】:

    • 我无法获得像您这样的结果。请参阅“Postscript01”。
    • @aaaaa0a df.groupby(df.Flag.cumsum())['Data'].sum().values 的输出是什么,执行 df.Flag=df.Flag.astype (int) 在我的代码之前
    • 非常感谢。我用你的建议解决了这个问题。我又发布了一个问题here 如果您提出一些建议,我将不胜感激。
    • @aaaaa0a 这个帮助你愿意接受吗?
    猜你喜欢
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2015-04-27
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    相关资源
    最近更新 更多