繁体   English   中英

如何在 dataframe 中拆分具有不同分隔符的字符串?

[英]How can i split string having different delimeters in dataframe?

在我的数据集中有 4 列,其中一些行有多个条目,用“;”分隔在一列和“,”中,我如何将它们分成单独的行

我尝试使用 pandas 的str.split和堆栈方法,但它仅适用于单个分隔符,我希望对具有不同分隔符的整个 dataframe

我试过用这个,但也没有用

[In]  df.set_index(['Year','Source title','Volume','Issue','Pagestart','Page end','Cited by','Abstract']).apply(lambda x :x.str.split(',')).stack().apply(pd.Series).stack()

我想将一行中的数据拆分为不同的行,这是我的 csv 文件的示例:

Name     id    city 
a,b,c   1;2;3  x,y,z
d       4       w

想转换成:

Name     id    city 
a        1       x
b        2       y
c        3       z
d        4       w

您可以使用regex使用多个分隔符:

df = df.apply(lambda x: x.str.split('[,;]').explode())

  Name id city
0    a  1    x
0    b  2    y
0    c  3    z
1    d  4    w

假设您的大多数列都可以用逗号分隔。 对于其他所有内容,您可以手动在字典中输入条目。

您现在可以执行按列拆分和explode

delim = {'id': ';'}
df.apply(lambda x: x.str.split(delim.get(x.name, ',')).explode())

  Name id city
0    a  1    x
0    b  2    y
0    c  3    z
1    d  4    w

(df.apply(lambda x: x.str.split(delim.get(x.name, ',')).explode())
   .reset_index(drop=True))

  Name id city
0    a  1    x
1    b  2    y
2    c  3    z
3    d  4    w

这里的假设是给定行中的所有列将具有相同数量的拆分。

(适用于pandas >= 0.25 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM