[英]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.