繁体   English   中英

如何从python中的数据帧中删除特定的str?

[英]how to remove specific str from dataframe in python?

我正在处理每行包含“_”的数据框,例如:

    numbers
0   123
1   321_2
2   2222_2
3   41232_1
4   23123_5
5   45455
6   231231
7   3479_23_23
8   82837_212_fd

我的目的是删除每行第一个“_”之后的所有字符串,例如:

    numbers
0   123
1   321
2   2222
3   41232
4   23123
5   45455
6   231231
7   3479
8   82837

然后我有了一个使用 'split' 函数的想法:

result = s.split("_")[0]

但是,它不能应用于数据帧,因为我收到了一个错误:AttributeError: 'DataFrame' object has no attribute 'split'

我的第一个问题是:如何在第一个“_”之后删除 str?

此外,是否可以只删除“_”但保留前导数字部分?

你可以做

df['numbers'] = df['numbers'].astype(str).str.split('_').str[0]
df
  numbers
0     123
1     321
2    2222
3   41232
4   23123
5   45455
6  231231
7    3479
8   82837

添加到BEN_YO的答案。

如果它是一个系列,您可以对其使用拆分功能。

lst = ['123','321_2','2222_2','41232_1','23123_5','45455','231231','3479_23_23','82837_212_fd']

s = pd.Series(lst)

s
0             123
1           321_2
2          2222_2
3         41232_1
4         23123_5
5           45455
6          231231
7      3479_23_23
8    82837_212_fd
dtype: object
s.str.split('_').str[0]
0       123
1       321
2      2222
3     41232
4     23123
5     45455
6    231231
7      3479
8     82837
dtype: object

但是,如果是数据框,则使用相同的方法替换值。

df['numbers'] # 返回一个系列,我们正在该系列上应用拆分函数。

df = pd.Series(lst).to_frame('numbers')
type(df['numbers'])
pandas.core.series.Series
df['numbers'] = df['numbers'].str.split('_').str[0]
print(df)
  numbers
0     123
1     321
2    2222
3   41232
4   23123
5   45455
6  231231
7    3479
8   82837

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM