#python-3.x #pandas #dataframe #function #loops
#python-3.x #панды #фрейм данных #функция #петли
Вопрос:
Я создал функцию, которая принимает 4 параметра. Но у меня есть 100 различных наборов из этих 4 параметров, которые я хочу ввести в свою функцию.
Пытаюсь повторить набор из 100 с 4 параметрами в каждом, но мне нужны результаты, показывающие только строки, а не скобки любого типа, так как моя функция не может иметь дополнительных скобок.
Вот мой код:
def main(): run_list = [('file1.csv', 'file2.csv', pd.read_csv('file1.csv').columns[0], pd.read_csv('file2.csv').columns[0]), ('file3.csv', 'file4csv', pd.read_csv('file3.csv').columns[0], pd.read_csv('file4.csv').columns[0])] for k in run_list: myFunction(k)
Если я разберу код, я получу следующее:
run_list = [('file1.csv', 'file2.csv', pd.read_csv('file1.csv').columns[0], pd.read_csv('file2.csv').columns[0]), ('file3.csv', 'file4csv', pd.read_csv('file3.csv').columns[0], pd.read_csv('file4.csv').columns[0])] for k in run_list: print(str(k)) gt;gt;gt; ('file1.csv', 'file2.csv', 'column_name1', 'column_name2') gt;gt;gt; ('file3.csv', 'file4.csv', 'column_name3', 'column_name4')
Желаемый вывод без скобок, поэтому я могу использовать 4 параметра из каждого набора, для myFunction
которых требуется 4 параметра:
gt;gt;gt; 'file1.csv', 'file2.csv', 'column_name1', 'column_name2' gt;gt;gt; 'file3.csv', 'file4.csv', 'column_name3', 'column_name4'
Я пытался .strip('[]')
, это сработало print
, но не получилось function
:
def main(): run_list = [('file1.csv', 'file2.csv', pd.read_csv('file1.csv').columns[0], pd.read_csv('file2.csv').columns[0]), ('file3.csv', 'file4csv', pd.read_csv('file3.csv').columns[0], pd.read_csv('file4.csv').columns[0])] for k in run_list: print(k.strip('[]')) gt;gt;gt; 'file1.csv', 'file2.csv', 'column_name1', 'column_name2' gt;gt;gt; 'file3.csv', 'file4.csv', 'column_name3', 'column_name4' def main(): run_list = [('file1.csv', 'file2.csv', pd.read_csv('file1.csv').columns[0], pd.read_csv('file2.csv').columns[0]), ('file3.csv', 'file4csv', pd.read_csv('file3.csv').columns[0], pd.read_csv('file4.csv').columns[0])] for k in run_list: myFunction(k.strip('[]')) gt;gt;gt;AttributeError: 'list' object has no attribute 'strip'
Ответ №1:
IIUC использовать *
для распаковки:
def myFunction(a,b): print (a) file1.csv file3.csv print (b) file2.csv file4.csv return a '__' b #test list of tuples run_list = [('file1.csv', 'file2.csv'),('file3.csv', 'file4csv')] for k in run_list: out = myFunction(*k) print (out) file1.csv__file2.csv file3.csv__file4csv
Если проходят кортежи:
def myFunction(a): print (a) ('file1.csv', 'file2.csv') ('file3.csv', 'file4csv') return '__'.join(a) run_list = [('file1.csv', 'file2.csv', ), ('file3.csv', 'file4csv')] for k in run_list: out = myFunction(k) print (out) file1.csv__file2.csv file1.csv__file2.csv