pandas之筛选字符串字段。 Series.str.contains()

本文介绍如何使用Python的pandas库,通过正则表达式筛选DataFrame中name字段包含'中国'字样的行。并提供了解决to_excel()函数出现ValueError的常见原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

new_df_object = old_df_object[old_df_object.name.str.contains(r'.*?中国.*')]

这条语句会筛出old_df_object中name字段中的每一条是否包含中国字样的bool类型的Series。有则true,无则false。

然后将此Series对象传给old_df_object[]中。DataFrame对象会根据传进来的Series中每一行的布尔值来决定是否要筛出数据。最后将所有为True的行组成1个新的DataFrame对象赋值给new_df_object

 

参考数据:

DataFrame官方文档

http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html#pandas.DataFrame

Series.str.contains官方文档

http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.contains.html#pandas.Series.str.contains

 

DataFrame对象选取数据判断条件:

https://www.jianshu.com/p/127587a80491

 

 

这里顺便记下: 当使用df的to_excel()函数报ValueError: No engine for filetype: '错误时。这表明文件名后缀不对。应该称.xls

### Python Pandas 字符串操作方法与示例 #### 数据类型的确认与转换 为了确保在Pandas中进行有效的字符串处理,需先验证`Series`或`DataFrame`的数据类型是否为`string`。对于不确定的数据类型,可以通过`.astype("string")`来强制转换。 ```python import pandas as pd pd_not_s = pd.Series(["A", "B", "C", "Aaba", "Baca", "CABA", "dog", "cat"]) print("原始数据类型:", pd_not_s.dtype) # 转换数据类型至 string pd_s = pd_not_s.astype("string") print("转换后的数据类型:", pd_s.dtype) ``` 此段代码展示了如何检查并更改数据系列的存储类型为字符串[^1]。 #### 使用正则表达式进行模式匹配 当涉及到更复杂的字符串筛选条件时,可借助于正则表达式的强大功能。通过调用`str.contains()`函数,并传入相应的正则表达式作为参数,能够实现精确的内容查找。 ```python pattern = r'^[a-zA-Z]+$' # 只包含字母的简单正则表达式例子 filtered_series = pd_s[pd_s.str.contains(pattern, na=False)] print(filtered_series) ``` 这里定义了一个简单的正则表达式用于过滤只含有英文字母的项。 #### 合并与拆分多列信息 针对实际应用中的复杂场景,比如将多个字段组合成一个新的复合字段或者反过来解析现有字段内的子组件,Pandas提供了灵活的操作方式。 ```python data = {'省': ['广东省', '北京市'], '市': ['广州市', '朝阳区']} df = pd.DataFrame(data) # 将两列拼接在一起形成新的‘地址’列 df['地址'] = df['省'] + df['市'] print(df[['地址']]) ``` 这段脚本演示了怎样把省份名和城市名列连接起来创建完整的地理位置描述[^3]。 #### 创建虚拟变量(Dummy Variables) 有时需要基于某些分类特征构建二元指示矩阵,这时可以利用`get_dummies()`函数轻松完成这一任务。 ```python dummy_df = pd.get_dummies(pd_s, prefix='letter') print(dummy_df.head()) ``` 上述命令会根据输入序列生成一组布尔型的新列,每列表明原序列中特定字符的存在与否[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@凌晨三点半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值