gpt4 book ai didi

python 、 Pandas : What it is the best way to separate string into several columns?

转载 作者:行者123 更新时间:2023-12-02 01:35:02 25 4
gpt4 key购买 nike

我想将一个字符串拆分为几列,但是我遇到了 str.split 方法的问题。

示例:在对包含此类字符串的列 Name 执行 str.split 时,它会按预期工作。

data1 = {'Name': ['Alice 23', 'Philip 12', 'Krish 64', 'John 29']}
df1 = pd.DataFrame(data1)
df1
Name
0 Alice 23
1 Philip 12
2 Krish 64
3 John 29

执行分割:

df1[['Name', 'age']] = df1['Name'].str.split(' ', 1, expand=True)
df1

Name age
0 Alice 23
1 Philip 12
2 Krish 64
3 John 29

一切都很好,正如我想要的,但如果我需要放置其他分隔符,例如 || ,它就无法正常工作。

data2 = {'Name': ['Alice||23', 'Philip||12', 'Krish||64', 'John||29']}
df2 = pd.DataFrame(data)
df2

Name
0 Alice||23
1 Philip||12
2 Krish||64
3 John||29

执行分割...

df2[['Name', 'age']] = df2['Name'].str.split('[||]',1,expand = True)
df3[['Name', 'age']] = df2['Name'].str.split('||',1,expand = True)

结果不符合我的预期

df2
Name age
0 Alice |23
1 Philip |12
2 Krish |64
3 John |29

df3

Name age
0 Alice||23
1 Philip||12
2 Krish||64
3 John||29

此行为的原因是什么?如何获得 df1 的预期结果?

最佳答案

您遇到的问题是pandas默认假设要分割的字符串是正则表达式。在正则表达式中 "|"字符是一个特殊字符,使您能够匹配该字符左侧或右侧的任一表达式(例如,您可以将 'a' 或 'b' 与表达式 '(a|b)' 匹配。

就您而言,我们不想传递正则表达式,因此您可以传递 .str.split(…, regex=False) .

>>> df2['Name'].str.split('||', regex=False, expand=True)
0 1
0 Alice 23
1 Philip 12
2 Krish 64
3 John 29

关于 python 、 Pandas : What it is the best way to separate string into several columns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72547270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com