Python 3.x python获取第一个元素包含字符串的列
所以我得到了这个数据帧:Python 3.x python获取第一个元素包含字符串的列,python-3.x,pandas,Python 3.x,Pandas,所以我得到了这个数据帧: df = pd.DataFrame({'A': ['ex1|context1', 1, 'ex3|context3', 3], 'B': [5, 'ex2|context2', 6, 'data']}) 我想得到在第一个元素中有“|”的列,在我的示例中是A,因为ex1 | context1是第一个元素,并且包含“|”,如果数据中始终至少存在一个值: s = df.stack().reset_index(level=0, drop=True) out = s.str.
df = pd.DataFrame({'A': ['ex1|context1', 1, 'ex3|context3', 3], 'B': [5, 'ex2|context2', 6, 'data']})
我想得到在第一个元素中有
“|”
的列,在我的示例中是A
,因为ex1 | context1
是第一个元素,并且包含“|”
,如果数据中始终至少存在一个
值:
s = df.stack().reset_index(level=0, drop=True)
out = s.str.contains('|', na=False).idxmax()
print (out)
A
如果没有数据匹配,通用解决方案也可以工作:
df = pd.DataFrame({'A': ['ex1context1', 1, 'ex3ontext3', 3],
'B': [5, 'ex2ontext2', 6, 'data']})
print (df)
B A
0 ex1context1 5
1 1 ex2ontext2
2 ex3ontext3 6
3 3 data
s = df.stack().reset_index(level=0, drop=True)
out = next(iter(s.index[s.str.contains('|', na=False, regex=False)]), 'no match')
print (out)
no match
这是只通过第一列进行搜索,还是得到第一行中包含该字符串的第一列?它通过堆栈进行重塑,因此按行进行搜索是我在
df=pd.DataFrame上测试的原因({'A':['ex1 | context1',1','ex3 | context3',3],'B':['ex4 | context1','ex2 | context2',6,'data']))
它的两个列都以包含“|”的字符串开头,它只给了我一个,但没关系,我只需要第一个包含它的列,好奇地问:)。@alex-对于一般解决方案来说更复杂。tnx对于解决方案,pandas是一种痛苦。。如果你在没有任何经验的情况下深入研究它:D