根据Pandas中的模式复制Dataframe中的行

时间:2018-04-25 12:31:44

标签: python pandas

我有一个包含多行的数据框。找到模式后(例如shop_list(),仅在最后一列中找到),我想复制该行,但是根据列分配新值。所有数据都是字符串。例如:

;

变为

        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 工作,但我找不到有效的方法。你会怎么做?

当然,快速而肮脏的方法是逐行运行DF,但我觉得这不是很有效......

1 个答案:

答案 0 :(得分:2)

使用:

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. 的第一个split
  3. 对于由repeatDataFrame arange
  4. 的长度创建的常规解决方案iloc数组
  5. 最后使用拆分值的展平值
  6. 替换列C