Цикл Python Pandas не может выходить за пределы третьего циклаPython

Программы на Python
Anonymous
Цикл Python Pandas не может выходить за пределы третьего цикла

Сообщение Anonymous »

У меня есть кадр данных df_esn:

Код: Выделить всё

       ESN01  ESN02       DATE  DFFAM  DFFB1  DFFB2
0      26019  26020 2018-02-21 -0.201 -0.265 -0.265
1      26019  26020 2018-02-21  0.604  0.139 -0.167
2      26019  26020 2018-02-24 -0.661 -0.163 -0.496
может находиться в столбце ESN01 или ESN02. Если esn в ESN01, создайте новый столбец FF, скопировав DFFB1. Если esn находится в ESN02, создайте новый столбец FF, скопировав DFFB2. Таким образом, новый фрейм данных станет:

Код: Выделить всё

       ESN01  ESN02       DATE  DFFAM  DFFB1  DFFB2       FF
0      26019  26020 2018-02-21 -0.201 -0.265 -0.265   -0.265
1      26019  26020 2018-02-21  0.604  0.139 -0.167    0.139
2      26019  26020 2018-02-24 -0.661 -0.163 -0.496   -0.163
Это делает:

Код: Выделить всё

df_esn['FF'] = df_esn.apply(lambda row: row['DFFB1'] if row['ESN01'] == esn \
else row['DFFB2'], axis=1)
Поскольку в esn содержится много элементов, содержащихся либо в ESN01, либо в ESN02, я использовал следующее, чтобы перечислить все:

Код: Выделить всё

esn_list = pd.unique(df[['ESN01','ESN02']].values.ravel())
зацикливая esn_list, чтобы создать кадр данных

Код: Выделить всё

for esn in esn_list:
df_esn = df_esn[(df_esn['ESN01']==esn) | (df_esn['ESN02']==esn)]
df_esn['FF'] = df_esn.apply(lambda row: row['DFFB1'] if row['ESN01'] == esn \
else row['DFFB2'], axis=1)
Этого можно добиться вплоть до второго цикла esn. В третьем цикле возникла ошибка:

Код: Выделить всё

Traceback (most recent call last):
File "D:\Users\118015\Python\Scripts\RR.py", line 71, in 
df_esn['FF'] = df_esn.apply(lambda row: row['DFFB1'] if row['ESN01'] == esn \
File "D:\Python310\lib\site-packages\pandas\core\frame.py", line 3645, in __setitem__
self._set_item_frame_value(key, value)
File "D:\Python310\lib\site-packages\pandas\core\frame.py", line 3775, in _set_item_frame_value
raise ValueError("Columns must be same length as key")
ValueError: Columns must be same length as key

Если просто запустить третий цикл esn, он завершится без какого-либо сообщения об ошибке. Как заставить его зацикливаться без сообщения об ошибке?

Подробнее здесь: https://stackoverflow.com/questions/787 ... third-loop

Вернуться в «Python»