Как упростить этот цикл (фрейм данных в панд)

#python #python-3.x #pandas #dataframe

Вопрос:

Эй, у меня есть фрейм данных, в котором значения столбца Values являются списками, где каждый список содержит строки с 3 символами. Для values от values_list я хочу заменить последний символ на «I» в каждом списке в Values столбце. Это мой текущий код:

 for i in range(len(data["Values"])):  for k in range(len(data.iloc[i]["Values"])):  if data.iloc[i]["Values"][k] in values_list:  data.iloc[i]["Values"][k] = data.iloc[i]["Values"][k][:2]   "I"  

Как я могу переписать его более правильным образом?

Комментарии:

1. можете ли вы указать заголовок ваших данных

Ответ №1:

Не совсем понятно, что вы пытаетесь сделать, но я думаю, что вы это имеете в виду.

Вы можете определить функцию, а затем использовать .map() ее в этом столбце:

 import pandas as pd  data = pd.DataFrame({'Values':[['aaa','bbb','ccc'],  ['ddd','eee','fff']]})   print(data)  values_list = ['aaa', 'ccc', 'eee']  def subI(value_list):  value_list = [x[:-1]   'I' if x in values_list else x for x in value_list]  return value_list  data['Values'] = data['Values'].map(subI)  print(data)  

Выход:

 print(data)  Values 0 [aaa, bbb, ccc] 1 [ddd, eee, fff]  Values 0 [aaI, bbb, ccI] 1 [ddd, eeI, fff]