Я пытаюсь использовать понимание списка для создания списка фреймов данных, в котором элемент, который я добавляю, является DataFrame[condition = True]
. Однако я получаю сообщение об ошибке:
list_of_dataframes = [df0[(df0['Names'].values == my_list_of_names[i])] for i in range(len(my_list_of_names))]
Файл "/home/josep/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py", строка 2986, в getitem вернуть self._getitem_bool_array (ключ)
Файл "/home/josep/anaconda3/lib/python3.7/site-packages /pandas/core/frame.py ", строка 3033, в _getitem_bool_array " Элемент неправильной длины% d вместо% d. " % (len (ключ), len (self.index))
ValueError: неправильная длина элемента 233 вместо 234.
Для понимание списка, синтаксис выглядит так:
new_list = []
for i in old_list:
if filter(i):
new_list.append(expressions(i))
Что переписано как: new_list = [expression(i) for i in old_list if filter(i)]
Итак, теперь мой for
bucle:
my_list_of_names = pd.DataFrame('0': ['Jou', 'Lara'])
d = {'Names': ['John', 'Lara', 'Ari', 'Jou'], 'col2': [1, 2, 2, 2], 'col3': [1, 2 ,3, 4], 'col4': [2,1,1,1,], 'col5': [2,1,0,0], 'col6': [2,1,3,1]}
df0 = pd.DataFrame(data=d)
list_of_dataframes = []
for i in range(len(my_list_of_names)):
df_i = df0[(df0['Names'].values ==
my_list_of_names.values[i])]
list_of_dataframes.append(df_i)
Который может быть записан как:
list_of_dataframes = [df0[(df0['Names'].values ==
my_list_of_names.values[i])] for i in range(len(my_list_of_names))]
И , это прекрасно работает . Но если я попытаюсь упростить мой код, изменив тип my_list_of_names
, который является DataFrame, на список тип:
my_list_of_names2 = ['Jou', 'Lara'] # IS A LIST
list_of_df = [df0[(df0['Names'].values ==
my_list_of_names2[measure])
] for measure in range(len(my_list_of_names2))]
Это вызовет ошибку значения:
runcell (7, '~ / sample.py') Traceback (последний последний вызов):
Файл "~ / sample.py", строка 263, для измерения в диапазоне (len (my_list_of_names2))]
Файл "~ / sample.py", строка 263, для измерения в диапазоне (len (my_list_of_names2))]]
Файл "~ home / josep / anaconda3 / lib / python3 .7 / site-packages / pandas / core / frame.py ", строка 2986, в getitem return self._getitem_bool_array (key)
File" / home / josep / anaconda3 / lib / python3 .7 / site-packages / pandas / core / frame.py ", строка 3033, в _getitem_bool_array" Элемент неверной длины% d вместо% d. " % (len (ключ), len (self.index))
ValueError: Элемент неправильной длины 233 вместо 234.
ПРИМЕЧАНИЕ. Реальный список и датафреймы разные, но ради вопроса я подумал, что проще поставить более короткие.