使用多个参数循环遍历函数

时间:2018-03-09 02:57:15

标签: python-3.x loops

在这里开始python用户。这似乎是一个简单的问题,但我还没有找到答案或者至少能够找到答案。

我的功能如下:

def standardize(columns, dictionary):
    for x in columns:
        df.iloc[:,x] = df.iloc[:,x].map(dictionary)

该函数获取列列表,并根据关联的字典重新编码该列中的所有值。

不是为每个列列表及其相关字典调用函数十几次:

standardize([15,19,27], dict1)
standardize([47,65,108], dict2)
standardize([49,53,55,90], dict3)

理想情况下,我希望它能够循环播放。所有列列表的列表和所有词典的列表。类似的东西:

for column_list in [[list1], [list2], [list3]]:
    standardize(column_list, associated_dictionary)

我该怎么做?

1 个答案:

答案 0 :(得分:2)

不,在考虑单次更换时无需循环。您可以改为使用applymap

col_list = [...]
df.iloc[:, columns] = df.iloc[:, columns].applymap(dictionary.get)

现在,对于多个集合,您可以zip列列表和词典并进行迭代:

column_lists = [col_list1, col_list2, ...]
dictionaries = [dict1, dict2, ...]

for c, d in zip(column_lists, dictionaries):
    df.iloc[:, c] = df.iloc[:, c].applymap(d.get)