#python #string #csv #substring
#python #строка #csv #подстрока
Вопрос:
У меня есть следующая result
переменная во фрейме данных ( df
), и я пытаюсь вывести csv-файл для тех, которые начинаются с «test»
abandoned
static
test_a_1
test_b_2
abandoned
test_b_3
Следующий код не работает. Заранее спасибо за ваши идеи
substr="test"
if substr in df['result']:
df.to_csv("C:/Projects/result.csv",sep=',',index=False)
Комментарии:
1. когда вы говорите, что не работает, вы имеете в виду, что он вообще не пишет или пишет неправильно?
2. Это не запись. Результат
substr in df['result']
равен false
Ответ №1:
То, что «test_a_1» находится в списке, не означает, что «test» есть в логике Python.
Пример того, как Python оценивает операторы «if [string] in [list]»:
>>> test = 'test1'
>>> testlist = ['test1', 'test2']
>>> if 'test' in test:
... print('hi')
...
hi
>>> if 'test' in testlist:
... print('hi')
...
>>>
Это сработало бы:
substr="test"
for val in df['result']:
if substr in val:
# Do stuff
# And optionally (if you only need one CSV per dataframe rather than one CSV per result):
break
Комментарии:
1. Спасибо Iroh.. Это дает вывод для всех результирующих значений, но мне интересно увидеть
test_a_1
,test_b_2
,test_b_3
строки в csv.2. Похоже, решение scomes работает для этого, плюс это сексуальный однострочник. 😉
Ответ №2:
Если вы имеете в виду, что хотите создать csv, содержащий только строки, для которых результат начинается с ‘test’, используйте следующее:
df[df.result.str.contains('^test.*')].to_csv("C:/Projects/result.csv",sep=',',index=False)
Ответ №3:
Это сработало бы :
df['temp'] = [1 if 'test' in df['result'][k] for k in df.index else 0]
df['result'][df['temp']==1].to_csv("/your/path", sep=',', index=False)