[英]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.