基于Pandas中PipeDelimited列创建多个新行

2024-04-25 23:09:29 发布

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

在Python中,我试图将一列拆分为多行 这个

       A                    B
  ABC|XYZ|PQR              123

进入

^{pr2}$

我有这个密码

df_wpipe = df[df['director'].str.contains("\|", na=False)]
df_wopipe = df[df["director"].str.contains("\|")==False]
for x in range(100):
    df_a = df_wpipe.copy()
    df_a['director'] =  df_a['director'].str.split('\|').apply(lambda li: li[x] if len(li) == x+1 else None)
    new_rows = df_wopipe.append(df_a)
    if len(df_a.index)==0:
        break

第一个结构包含(“\|”,na=False)似乎不起作用,因为df df_wpipe只包含154个,其中is应该有500个+ 其次,for循环似乎没有附加行。 你能帮忙吗。 谢谢


Tags: falsedfforleniflidirectorabc
2条回答

这是最不重要的问题。在

s=df.A.str.split('|')
pd.DataFrame({'A':s.sum(),'B':df.B.repeat(s.str.len())})
Out[22]: 
     A    B
0  ABC  123
0  XYZ  123
0  PQR  123

或者尝试一些新的东西

^{pr2}$
df.loc[df.index.repeat(df.A.str.count('\|') + 1)].assign(
    A=np.concatenate(df.A.str.split('|')))

     A    B
0  ABC  123
0  XYZ  123
0  PQR  123

没有纽姆

^{pr2}$

如果我们命名index,我们可以使用join

df.rename_axis('i', inplace=True)
df.A.str.split('|', expand=True).stack().to_frame('A').join(df.drop('A', 1))

       A    B
i            
0 0  ABC  123
  1  XYZ  123
  2  PQR  123

相关问题 更多 >