基于Pandas模式的数据帧行复制

2024-09-26 22:54:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有几行的数据帧。当找到一个模式(比如;,只在最后一列中找到)时,我想复制行,但是基于一列分配新的值。所有数据都是字符串。例如:

        A     B      C
 x1     b1a   kxl    Ak
 x2     b1b   txl    Ak
 x3     b1c   uxl    Ak;Lo  #should be duplicated
 x4     b1d   ixl    Lo

变成

        A     B      C
 x1     b1a   kxl    Ak
 x2     b1b   txl    Ak
 x3     b1c   uxl    Ak  #duplicated
 x3     b1c   uxl    Lo  #duplicated
 x4     b1d   ixl    Lo

我试图让groupby('C').split(';')工作,但没有找到一个有效的方法。你会怎么做

当然,一种快速而肮脏的方法是一行一行地运行DF,但是我想这不是很有效


Tags: 数据loakx1x2duplicatedx3x4
1条回答
网友
1楼 · 发布于 2024-09-26 22:54:31

用途:

s = df['C'].str.split(';')
df = df.iloc[np.repeat(np.arange(len(df.index)), s.str.len())]
df['C'] = np.concatenate(s)
print (df)
      A    B   C
x1  b1a  kxl  Ak
x2  b1b  txl  Ak
x3  b1c  uxl  Ak
x3  b1c  uxl  Lo
x4  b1d  ixl  Lo
  1. 第一列^{}由分隔符分隔
  2. 对于通解^{}数组,由^{}创建,长度为DataFrame,带^{}
  3. 最后将列C替换为拆分值的扁平值

相关问题 更多 >

    热门问题