我有55列的数据框,想要找到第一个出现字符串,其中列值与'$'一致
我尝试了以下脚本,但无法实现。
string = ''
for col in df:
string=df[col].str.startswith('$')
if string!='': sys.exit()
示例df:
Col1 Col2 Col3 Col4
123 5678 $45678 $5000
54356 768 Rs.5432 6546
预期结果:$ 45678,存在于第3栏
答案 0 :(得分:2)
您可以先创建遮罩:
m = df.astype(str).applymap(lambda x: x.startswith('$'))
print (m)
Col1 Col2 Col3 Col4
0 False False True True
1 False False False False
然后按numpy.where
按行和列获取第一个True
的位置,以便iat
选择:
print (np.where(m))
(array([0, 0], dtype=int64), array([2, 3], dtype=int64))
idx = np.where(m)[0][0]
col = np.where(m)[1][0]
a = df.iat[idx, col]
$45678
答案 1 :(得分:1)
for col in df:
if np.any(np.char.startswith(np.asarray(df[col], str), '$')):
string = col
break
else:
sys.exit()
答案 2 :(得分:1)
IIUC您可以根据条件使用.loc
和.iloc
,即
mask = df.apply(lambda x : x.str.startswith('$').any(),0)
#mask will return the boolean values so using loc we can access the columns
col = df.loc[:,mask].iloc[:,0]
输出col
:
0 $45678 1 Rs.5432 Name: Col3, dtype: object
col[col.str.startswith('$')].values[0]
'$45678'