Python 3.6:从数据框中查找以'$'开头的第一个出现字符串(整个列值)

时间:2017-09-19 12:54:41

标签: python python-3.x pandas

我有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栏

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)

使用numpy.char.startswith

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'