Моя цель - свернуть таблицу ниже в один столбец, и этот вопрос конкретно касается синей строки ниже. Таблица содержит три категориальные переменные и 6 аналитических / количественных переменных. Столбцы C1 и C2 - единственные переменные, которые должны совпадать для успешного объединения. Все пустые ячейки являются NaN, а python код для копирования приведен ниже. Эти строки экспортируются независимо, поскольку они содержат информацию, найденную в других связанных таблицах, не включенных в экспорт.
Вопрос . (Синий) Некоторая количественная информация в синем ряду также находится в сером ряду, а некоторые - нет. Есть ли способ скопировать новую информацию (-8 в Q6) в серый ряд, а затем удалить / выделить синий ряд? Здесь сохраняется категориальная информация серой строки, если предположить, что keep_ 'first' по умолчанию drop_duplicates активен.
Смежный вопрос . (Желтая строка) Как удалить строки, которые не являются точными дубликатами, но не содержат никакой новой информации (больше NaN)
Таблица данных
Ожидаемый результат
Ожидаемый результат будет иметь серую строку, обновленную с Q6 из синей строки и синей строки удалены.
[['C1 (PK)', 'C2 (FK)', 'C3', 'C4', 'Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6']
['S1','P3','H1',Timestamp('2004-12-04 00:00:00'),-15.0,-27.4,nan,-10.0,-15.0,-8]]
Текущий прогресс
Мой текущий код включает эту строку для удаления всех строк, где все количественные переменные имеют значение NaN. df.dropna(subset=df.columns[4:],how='all', inplace=True)
Также эта строка для удаления всех строк, где все количественные переменные одинаковы. df.drop_duplicates(subset=df.columns[4:], inplace=True)
Пример кода, который можно скопировать в IDE.
import pandas as pd
df = [['S1','P3','H1',Timestamp('2004-12-04 00:00:00'),-15.0,-27.4,nan,-10.0,-15.0,nan],
['S1','P3','H1',Timestamp('2004-12-20 00:00:00'),nan,nan,nan,nan,nan,nan],
['S1','P3','H2',Timestamp('2004-12-20 00:00:00'),-15.0,nan,nan,-10.0,nan,nan],
['S1','P3','H3',Timestamp('2004-12-07 00:00:00'),nan,nan,nan,nan,-15.0,-8.0],
['S1','P3','H1', Timestamp('2004-12-04 00:00:00'), -15.0,-27.4,nan,-10.0, -15.0, nan]]
cols = ['C1 (PK)', 'C2 (FK)', 'C3', 'C4', 'Q1', 'Q2', 'Q3', 'Q4', 'Q5', 'Q6']
pd.DataFrame(data=df,columns=cols)
df.drop_duplicates(inplace=True)
df.dropna(subset=df.columns[4:],how='all', inplace=True)
df.drop_duplicates(subset=df.columns[4:], inplace=True)