Sie können loc
für die Auswahl nach Bedingung str.contains
mit Parameter case=False
verwendet verwenden. Zuletzt, wenn Sie list
Verwendung tolist
benötigen:
li = ['Sensor','0x024']
for i in li:
print (df.loc[df['title'].str.contains(i, case=False),'id'].tolist())
[3, 4]
[1, 4]
Zum Speichern Sie verwenden können dict
Verständnis:
dfs = { i: df.loc[df['title'].str.contains(i, case=False),'id'].tolist() for i in li }
print (dfs['Sensor'])
[3, 4]
print (dfs['0x024'])
[1, 4]
Wenn Sie function
benötigen, versuchen get_id
:
def get_id(id):
ids = df.loc[df['title'].str.contains(id, case=False),'id'].tolist()
return "Input String = %s : Output = ID " % id +
" and ".join(str(x) for x in ids) +
" has '%s' in it." % id
print (get_id('Sensor'))
Input String = Sensor : Output = ID 3 and 4 has 'Sensor' in it.
print (get_id('0x024'))
Input String = 0x024 : Output = ID 1 and 4 has '0x024' in it.
EDIT von Kommentar:
Nun ist es komplizierter, weil die Verwendung logische and
:
def get_multiple_id(ids):
#split ids and crete list of boolean series containing each id
ids1 = [df['title'].str.contains(x, case=False) for x in ids.split()]
#http://stackoverflow.com/a/20528566/2901002
cond = np.logical_and.reduce(ids1)
ids = df.loc[cond,'id'].tolist()
return "Input String = '%s' : Output = ID " % id +
' and '.join(str(x) for x in ids) +
" has '%s' in it." % id
print (get_multiple_id('0x024 Sensor'))
Input String = '0x024 Sensor' : Output = ID 4 has '0x024 Sensor' in it.
Wenn Gebrauch logische or
, ist es einfacher ist, weil or
in re
|
ist, so dass Sie 0x024|Sensor
verwenden können:
def get_multiple_id(id):
ids = df.loc[df['title'].str.contains(id.replace(' ','|'), case=False),'id'].tolist()
return "Input String = '%s' : Output = ID " % id +
' and '.join(str(x) for x in ids) +
" has '%s' in it." % id
print (get_multiple_id('0x024 Sensor'))
Input String = '0x024 Sensor' : Output = ID 1 and 3 and 4 has '0x024 Sensor' in it.
können Sie tue 'df.loc [df ['title']. str.contains ('Sensor'), 'id]' also gib deine Eingabe-Zeichenfolge als Argument für 'str.contains' weiter – EdChum