Python数据帧:包含“”的简单字符串拆分

2024-05-14 18:08:07 发布

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

祝大家新年快乐。我有一个数据帧,在每列中包含int和字符串。在我的字符串列中,我的一些值中间包含“-”,我想删除“-”后面的任何字符串。看看我下面的df。你知道吗

input:
    buzz_id     facet   facet_cls   facet_val   p_buzz_date
0   95713207    A3      Small           MN        20160101
1   95713207    S3      Small-box       Tbd       20160101
2   95713207    F1      Medium          es        20160101
3   95713207    A2      Medium-box      esf       20160101
4   95713207    A1      Dum-pal         ess       20160101
...


output:
    buzz_id     facet   facet_cls   facet_val   p_buzz_date
0   95713207    A3      Small           MN        20160101
1   95713207    S3      Small           Tbd       20160101
2   95713207    F1      Medium          es        20160101
3   95713207    A2      Medium          esf       20160101
4   95713207    A1      Dum             ess       20160101
...

因此,在我的“facet\u cls”列中,任何在“-”(包括“-”)之后的内容都需要删除。而且我的数据本身非常大,所以我希望使用我能找到的最快的进程。有什么想法吗?你知道吗

提前谢谢!你知道吗


Tags: 数据字符串boxiddates3vala3
2条回答

使用^{},然后按str[0]只选择列表的第一个值:

df['facet_cls'] = df['facet_cls'].str.split('-').str[0]
print (df)
    buzz_id facet facet_cls facet_val  p_buzz_date
0  95713207    A3     Small        MN     20160101
1  95713207    S3     Small       Tbd     20160101
2  95713207    F1    Medium        es     20160101
3  95713207    A2    Medium       esf     20160101
4  95713207    A1       Dum       ess     20160101

细节:

print (df['facet_cls'].str.split('-'))
0          [Small]
1     [Small, box]
2         [Medium]
3    [Medium, box]
4       [Dum, pal]
Name: facet_cls, dtype: object

也可以使用lambda表达式执行此操作,如下所示:

df['facet_cls'] = df['facet_cls'].apply(lambda x:x.split('-')[0])

相关问题 更多 >

    热门问题