如何在Pandas中筛选第二列包含'$$$'的行(非CSV读取场景)
筛选文本文件特定行生成DataFrame
输入文件内容 (input.txt)
header 040525 $$$$$ 9999 12345 random stuff 040525 $$$$$ 8888 12345 040525 $$$$$ 7777 12345 random stuff 040525 $$$$$ 6666 12345 footer
现有预处理代码
data_list = [] with open('input.txt', 'r') as data: for line in data: data_list.append(line.strip().split()) df = pd.DataFrame(data_list)
需求
仅将第二列包含$$$的行加入列表,最终生成如下结构的DataFrame:
0 1 2 3 0 40525 $$$$$ 9999 12345 1 40525 $$$$$ 8888 12345 2 40525 $$$$$ 7777 12345 3 40525 $$$$$ 6666 12345
修改后的代码
import pandas as pd data_list = [] with open('input.txt', 'r') as data: for line in data: split_line = line.strip().split() # 检查行分割后至少有2个元素,且第二列包含$$$ if len(split_line) >= 2 and '$$$' in split_line[1]: data_list.append(split_line) df = pd.DataFrame(data_list) print(df)
代码说明
- 先对每行做分割处理得到
split_line,避免重复计算 - 添加判断条件:确保分割后的列表长度足够(避免索引越界),同时第二元素(索引为1)包含
$$$,只有满足条件的行才会被加入data_list - 最终生成的DataFrame只会保留符合要求的行,自动过滤掉header、footer和随机内容行
内容的提问来源于stack exchange,提问作者yodish
相关产品推荐
相关产品推荐

