Python 从数据帧中提取单个值

Python 从数据帧中提取单个值,python,pandas,dataframe,Python,Pandas,Dataframe,在Python中,我试图从数据帧中提取单个值。我确切地知道这个值包含什么,我只需要在数据帧中的任何地方找到它并提取它 例如,在下面的数据框中: df=pd.DataFrame( {0:['BA1234','CA:1234','DA','DA1234','EX DA','CA1234'], 1:['BA1234','CA:1234','DA','CA1234','EX DA','CA1234'], 2:['BA1234','CA:1234','DA','CA1234','EX DA','CA123

在Python中,我试图从数据帧中提取单个值。我确切地知道这个值包含什么,我只需要在数据帧中的任何地方找到它并提取它

例如,在下面的数据框中:

df=pd.DataFrame(
{0:['BA1234','CA:1234','DA','DA1234','EX DA','CA1234'],
1:['BA1234','CA:1234','DA','CA1234','EX DA','CA1234'],
2:['BA1234','CA:1234','DA','CA1234','EX DA','CA1234']]
我想提取包含两个字母“DA”和后面正好4位数字的字符串

我一直在试着用面具:

mask=pd.DataFrame(对于df中的列,[df[col].str.contains('^DA\d{4}',na=False]))
这似乎有效:

da_值=df[mask]
达乌值
0    1    2
0楠楠楠楠楠
1楠楠楠楠楠楠
2楠楠楠楠楠
3大1234南南
4楠楠楠楠楠
5楠楠楠楠楠
但是,如何从数据帧中提取值?有没有更好/更简单的方法

编辑:我真正想要的输出是

da_value = 'DA1234'
首先用于
系列
,然后使用以下各项进行过滤:

如果需要列表中的第一个值,您可以选择:

print (a[0])
DA1234
或通用解决方案如果可能不存在值,则添加默认值:

print (next(iter(a), 'no match'))
DA1234

如果您只想要字符串符合条件的那一行,那么下面的命令就行了

使用

输出

        0       1       2
3  DA1234  CA1234  CA1234
'DA1234'
已更新

df.apply(lambda x: re.findall('^DA\d{4}',' '.join(list(x))), axis=1).any()[0]
输出

        0       1       2
3  DA1234  CA1234  CA1234
'DA1234'
您可以使用
df.apply()
应用
series.str.contains()
以及over
axis=1
来获取与模式匹配的任何列所在的行:

df[df.apply(lambda x: x.str.contains(r'^DA\d{4}', na=False)).any(axis=1)]


由于要在数据框中的任意位置搜索值,可以重新调整值的形状,使其成为单个维度系列:

s = pd.Series(df.values.reshape(len(df) * len(df.columns)))
s = s.loc[s.str.match(r'DA[0-9]{4}')]
if len(s) == 0:
    print('Not found')
else:
    print(s.iloc[0])
它只打印示例数据

DA1234

我喜欢这个..+1抱歉,我意识到我的问题不清楚。我实际上在寻找的结果是字符串本身“DA1234”对不起,我意识到我的问题不清楚。我实际上要寻找的结果是字符串本身“DA1234”太棒了,这就是我要寻找的。非常感谢。对不起,我意识到我的问题不清楚。我实际上要查找的结果是字符串本身“DA1234”
DA1234