使用Pandas,我如何根据第一个空格拆分。

2024-10-01 11:28:44 发布

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

所以我有一列代码:“数据集.csv““

0020-004241 purple
00532 - Blue
00121 - Yellow
055 - Greem
0025-097 - Orange

期望输出:

^{pr2}$

我想把代码和代码的单词分成两个不同的列。在

我试过了:

df =pandas.read_csv(dataset.txt)

df = pandas.concat([df, df.columnname.str.split('/s', expand=True)], 1)
df = pandas.concat([df, df.columnname.str.split('-', expand=True)], 1)

在` 它产生了意外的输出: 紫色无 蓝色无 黄色无 绿色无 橙色无

如何正确分割这些数据?在


Tags: csv数据代码truepandasdfbluesplit
3条回答

您可以通过几个拆分调用来处理此问题:

df = pd.DataFrame({'col': ['0020-004241 purple', '00532 - Blue',
                           '00121 - Yellow', '055 - Greem',
                           '0025-097 - Orange']})

df[['col1', 'col2']] = df['col'].str.split(n=1, expand=True)
df['col2'] = df['col2'].str.split().str[-1]

print(df)

                  col         col1    col2
0  0020-004241 purple  0020-004241  purple
1        00532 - Blue        00532    Blue
2      00121 - Yellow        00121  Yellow
3         055 - Greem          055   Greem
4   0025-097 - Orange     0025-097  Orange

使用str.split(" ", 1)

例如:

import pandas as pd
df = pd.read_csv(filename,names=['code'])
df[['code','name_of_code']] = df["code"].str.split(" ", 1, expand=True)
df["name_of_code"] = df["name_of_code"].str.strip("-")
print(df)

输出:

^{pr2}$

在加载CSV时,可以使用regex作为分隔符,以避免进一步的拆分。在

from io import StringIO
import pandas as pd

file = StringIO(
    """0020-004241 purple
    00532 - Blue
    00121 - Yellow
    055 - Greem
    0025-097 - Orange"""
)

df = pd.read_csv(file, sep='\s+\-*\s*', header=None)

当然,您可以添加标题,但是我在这个示例中尽量接近您的初始输入。在

现在read_csv生成以下DF:

^{pr2}$

相关问题 更多 >