You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则或匹配方法将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:40:25