按不同字符串大小的分隔符拆分列

2024-04-27 18:58:52 发布

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

如何拆分像df.value这样的列

value
--------
Top/Animals/Cat
Top/Dog
Pig/Guineea/Piglet

分为多列

val1 |   val2   | val3 |
Top    Animals     Cat
NaN      Top       Dog
Pig    Guineea    Piglet

这样我就有了最长字符串和NaN的列数,其中其他字符串的长度不同


Tags: 字符串dfvaluetopnancatanimalsdog
3条回答

让我们试试新的

sep='/'
s=df.value.str.count(sep)
s=((s.max()-s).map(lambda x : x*sep)+df.value).str.split(sep,expand=True)
     0        1       2
0  Top  Animals     Cat
1           Top     Dog
2  Pig  Guineea  Piglet

.str.split()expand=True是你在这里的朋友

df['value'].str.split('/', expand=True)
  • 您可以首先颠倒字符串的顺序,然后将str.splitexpand参数一起使用
df = pd.DataFrame({'value' : ['Top/Animals/Cat', 'Top/Dog', 'Pig/Guineea/Piglet', 'Top']})

# reverse string first. Top/Animals/Cat will become Cat/Animals/
df = df['value'].apply(lambda x : '/'.join(x.split('/')[::-1])).str.split('/', expand=True) 

# column renaming and order
df.columns = ['val' + str(i) for i in range(len(df.columns), 0,-1)]
df = df[df.columns[::-1]]
df

输出

    val1    val2    val3
0   Top     Animals Cat
1   None    Top     Dog
2   Pig     Guineea Piglet
3   None    None    Top

相关问题 更多 >