在这里开始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)
我该怎么做?
答案 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)