如何用正则或匹配方法将DataFrame含指定字符串的行复制到新DataFrame
从Pandas DataFrame中提取含指定字符串的行
当然可以用正则或字符串匹配方法实现,下面直接给你具体操作方式:
先构造示例DataFrame
首先用代码生成你给出的df1:
import pandas as pd data = { 'Location': ['Up', 'Up', 'Down', 'Left', 'Down', 'Right'], 'Value': [10, 12, 11, 8, 15, 30], 'Name': ['Test A', 'Test B', 'Prod 1', 'Test C', 'Prod 2', 'Prod 3'], 'Type': ['X', 'Y', 'Y', 'Y', 'Y', 'X'] } df1 = pd.DataFrame(data)
方法1:基础字符串匹配(默认支持正则)
用Pandas的str.contains()方法,直接筛选Name列包含"Test"的行,默认就是正则模式,代码如下:
df2 = df1[df1['Name'].str.contains('Test')]
运行后得到的df2就是你想要的结果:
Location Value Name Type 0 Up 10 Test A X 1 Up 12 Test B Y 3 Left 8 Test C Y
方法2:自定义正则匹配
如果需要更复杂的匹配规则,比如只匹配以Test开头的字符串,或者包含特定模式的内容,直接写正则表达式即可:
# 只匹配Name列以Test开头的行 df2 = df1[df1['Name'].str.contains(r'^Test')] # 匹配包含Test或Prod的行(用正则或逻辑) df2 = df1[df1['Name'].str.contains(r'Test|Prod')]
可选参数说明
case=False:忽略大小写,比如能匹配"test A"这类小写情况na=False:如果列中有空值,直接排除空值行(默认返回NaN会导致筛选出错)df2 = df1[df1['Name'].str.contains('Test', case=False, na=False)]
内容的提问来源于stack exchange,提问作者2S2E
相关产品推荐
相关产品推荐

