У меня есть панд dataframe, который выглядит следующим образом:Создать новую строку, если значение столбца существует
Я хотел бы перебирать колонок 3, и если элемент существует, добавьте новую строку в dataframe , используя значение в столбце 3 в качестве нового значения в столбце 2, а также используя данные в столбцах 0 и 1 из строки, где оно было найдено как значения для столбцов 0 и 1 во вновь добавленной строке:
Здесь строка 2 - это новая добавленная строка. Значения в столбцах 0 и 1 в этой строке исходят из строки, где было найдено «D», а теперь столбец 2 новой строки содержит значение из столбца 3 в первой строке «D».
Вот один из способов сделать это, но, безусловно, должна быть более общим решением, особенно если я хочу, чтобы сканировать более одной колонки:
a = pd.DataFrame([['A','B','C','D'],[1,2,'C']])
b = a.copy()
for tu in a.itertuples(index=False): # Iterate by row
if tu[3]: # If exists
b = b.append([[tu[0],tu[1],tu[3]]], ignore_index=True) # Append with new row using correct tuple elements.
С моих реальных ДФ используемых строк в качестве имен столбцов, у меня была проблема с колоннами быть заказана при использовании 'append'. Чтобы разрешить это, я записал исходные имена столбцов как 'df_cols', а затем использовал' df = df.reindex_axis (df_cols, axis = 1) 'в добавленном фрейме. – AGS