dataframe中寻找一些字符串的方法

本文介绍了Pandas中两种常用的字符串匹配方法:isin() 和 str.contains()。isin()用于精确匹配,只有当目标字符串与指定集合中的某一项完全一致时才返回True;而str.contains()则更为灵活,只要目标字符串中包含指定的部分即返回True。

一般常用的有两个

  1. xxx.isin([‘a’, ‘b’])
    isin中的字符串要与columns里头的字符串完全匹配,才会返回True。不能只是一部分

  2. xxx…str.contains(’…’, na=False)
    contains只需要含有就可以,不需要完全一模一样,包含一部分就会返回True

### 如何从 Pandas DataFrame 中提取 JSON 字符串 为了从 Pandas DataFrame 的某一列中提取 JSON 字符串,通常会遇到两种情况:一是该列为包含 JSON 格式的字符串;二是需要基于某些条件筛选出含有特定模式的字符串再解析为 JSON。 当处理的是直接作为 JSON 格式存在的字符串时,可以利用 Python 内置的 `json` 库配合 Pandas 来完成转换工作。如果目标是从大量文本数据里识别并抽取符合 JSON 结构的部分,则可能需要用到更复杂的正则表达式或者其他高级技术[^1]。 #### 方法一:直接读取已知格式的 JSON 字符串 如果有明确知道某列包含了完整的 JSON 数据,可以直接通过如下方式将其转化为字典列表: ```python import json import pandas as pd # 假设有一个DataFrame, 其中'data' 列保存着JSON格式的字符串 df = pd.DataFrame({ 'data': ['{"key": "value"}', '{"another_key": 42}'] }) def parse_json_column(row): try: return json.loads(row['data']) except ValueError: return None df['parsed_data'] = df.apply(parse_json_column, axis=1) print(df[['data','parsed_data']]) ``` 这段代码展示了如何遍历整个 DataFrame 并尝试将每行中的 `'data'` 列的内容解释成 JSON 对象。成功解析后的结果会被存入新的 `'parsed_data'` 列中[^5]。 #### 方法二:使用正则表达式查找并提取嵌套于其他文本内的 JSON 片段 对于那些不是单独存在而是混杂在普通文本里的 JSON 数据来说,可以通过编写合适的正则表达式来定位这些片段,并进一步应用上述方法进行解析: ```python import re pattern = r'\{.*?\}' # 这只是一个简单的例子,实际使用的正则应该更加严谨以适应不同的输入形式 def extract_and_parse_json(text): matches = re.findall(pattern, text) parsed_results = [] for match in matches: try: obj = json.loads(match.strip()) parsed_results.append(obj) except Exception as e: continue return parsed_results if len(parsed_results)>0 else None df['extracted_jsons'] = df['text_with_mixed_content'].apply(extract_and_parse_json) print(df[['text_with_mixed_content','extracted_jsons']]) ``` 这里定义了一个辅助函数 `extract_and_parse_json()` ,用于接收一段混合有潜在 JSON 数据的文字内容,运用正则表达式寻找所有看起来像 JSON 的部分,之后逐一尝试解析它们成为有效的 Python 字典对象[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值