工作中数据的处理中往往会遇到筛选出不符合条件的或者不包含某个字符的dataframe,我们会如何去做呢?
可能你会想到用python写一个函数,然后用panda的apply函数或者map函数来进行处理,不可否认这是一中方法,但是实际上pandas中已经给我们开发了这样的函数,那我们为什么不直接调用呢?
首先看一下,怎么筛选出包含某些字符串的数据
#这是使用语法,模糊匹配
df[ df['通信名称'].str.contains('联通|移动|小灵通|电信')]
#这一种方法不是匹配,而是等于后面列表中的值,要注意区别
df[ df['通信名称'].isin(['联通','移动','小灵通','电信'])]
包含的字符串比较多时就用’|‘管道符隔开
那取出不包含这些字符串的数据怎么操纵呢,很简单,就是在前面加上一个~这种波浪符号就可以了
df[~ df['通信名称'].str.contains('联通|移动|小灵通|电信')]
没错就是这么简单的操作,但是contains也有一个不好的地方,就是如果某一列数据时文本型数据,处理起来就不是那么完美,因为contains函数类似于模糊查询,所以会出现错误匹配或者超出我们需要的匹配范围
问题又来了如果我们的条件是多个怎么办呢?
我们就需要这样来做
工作中数据的处理中往往会遇到筛选出不符合条件的或者不包含某个字符的dataframe,我们会如何去做呢?可能你会想到用python写一个函数,然后用panda的apply函数或者map函数来进行处理,不可否认这是一中方法,但是实际上pandas中已经给我们开发了这样的函数,那我们为什么不直接调用呢?首先看一下,怎么筛选出包含某些字符串的数据 #这是使用语法,模糊匹配 df[ df['通信名称'].str.contains('联通|移动|小灵通|电信')] #..
df = pd.DataFrame(np.arange(16).reshape(4,4),
#index = pd.date_range('20200301', periods=4),
index = list('hjkl'),
columns = list('ABCD'))
df =df.append(df)
df的样子如下
工作中数据的处理中往往会遇到
筛选
出不符合条件的或者不
包含
某个
字符
的dataframe,我们会如何去做呢?
可能你会想到用
python
写一个函数,然后用panda的apply函数或者map函数来进行处理,不可否认这是一中
方法
,但是实际上pandas中已经给我们开发了这样的函数,那我们为什么不直接调用呢?
首先看一下,怎么
筛选
出
包含
某些
字符串
的数据
#这是使用语法,模糊匹配
df[ df['通...
Python
的
字符串
处理,在爬虫的数据解析、大数据的文本清洗,以及普通文件处理等方面应用非常广泛,而且
Python
对
字符串
的处理内置了很多高效的函数,功能非常强大、使用非常方便。今天我就把
字符串
处理时用到最多的
方法
总结分享给大家,希望大家可以轻松应对
字符串
处理。
1.
字符串
的切片和相乘
(1)切片
str='Monday is a busy day'
print(str[0:7]) #表...
要
筛选
包含
特定字的
字符串
,可以使用
Python
中的
字符串
方法
或正则表达式。
使用
字符串
方法
可以使用`in`关键字来判断一个
字符串
是否
包含
指定的字。首先,我们需要一个
包含
所有
字符串
的
列表
。然后,我们可以使用一个for循环遍历
列表
中的每个
字符串
,并使用`if`语句检查是否
包含
指定字。如果条件为真,我们可以将该
字符串
添加到结果
列表
中。最后,返回结果
列表
即可。
下面是一个使用
字符串
方法
的示例代码:
```
python
def filter_strings(strings, target):
result = []
for string in strings:
if target in string:
result.append(string)
return result
strings = ["apple", "banana", "orange", "grape"]
target = "an"
filtered_strings = filter_strings(strings, target)
print(filtered_strings)
输出结果将会是:`['banana', 'orange']`,因为这些
字符串
都
包含
字母"an"。
如果想要更加灵活的
筛选
条件,可以使用正则表达式。可以使用`re`模块中的`search`函数来判断一个
字符串
是否匹配指定的正则表达式。具体过程和上述
方法
类似,只需要将
字符串
匹配条件改成正则表达式即可。
下面是一个使用正则表达式的示例代码:
```
python
import re
def filter_strings(strings, pattern):
result = []
for string in strings:
if re.search(pattern, string):
result.append(string)
return result
strings = ["apple", "banana", "orange", "grape"]
pattern = r"a.*e" # 匹配以"a"开头,以"e"结尾的
字符串
filtered_strings = filter_strings(strings, pattern)
print(filtered_strings)
输出结果将会是:`['apple', 'grape']`,因为它们是以"a"开头,以"e"结尾的
字符串
。
import datetime
max_datetime = datetime.datetime(9999, 12, 31, 15, 59, 59)
max_ts = max_datetime.timestamp()
# max_ts:253402243199
[/code]
超过这个值报错: ValueError: year 10000 is out of range