Использование python для объединения нескольких столбцов со значениями, отличными от NaN - PullRequest
0 голосов
/ 12 марта 2020

У меня есть 3 кадра данных с одинаковыми форматами и столбцами, и каждый кадр данных имеет столбец критерий 1 . Каждый фрейм данных заполнен разными людьми, и я хочу объединить не-NaN значения этого столбца в 3 фрейма данных, а затем сохранить его в файле excel, чтобы значения NaN были пустыми значениями в excel. Как я могу сделать это в Python? Кроме того, я хочу знать, есть ли какая-либо строка, которая заполнена по крайней мере двумя людьми или нет?

DataFrame 1

ID       Criterion 1
1021     10
1022     NaN
1023     NaN
1024     NaN
1025     NaN

DataFrame 2

ID       Criterion 1
1021     NaN
1022     15
1023     NaN
1024     NaN
1025     NaN

DataFrame 3

ID       Criterion 1
1021     NaN
1022     NaN
1023     NaN
1024     NaN
1025     34

Объединенный DataFrame

ID       Criterion 1
1021     10
1022     15
1023     NaN
1024     NaN
1025     34

Файл Excel DataFrame 1

ID       Criterion 1
1021     10
1022     15
1023     
1024     
1025     34

1 Ответ

1 голос
/ 12 марта 2020

Идея заключается в ошибке повышения, если в пользовательской функции есть 2 или более значений для одного и того же идентификатора для столбца Criterion 1:

def func(dfs):

    dfs = [x.set_index('ID') for x in dfs]

    df = pd.concat([x['Criterion 1'] for x in dfs], 1)
    m = df.count(axis=1).gt(1)
    L = m.index[m].astype(str)
    if m.any():
        raise ValueError(f'For ID(s) {", ".join(L)} are multiple values')

    return df.groupby(axis=1, level=0).first()


df = func([df1, df2, df3])
print (df)
      Criterion 1
ID               
1021         10.0
1022         15.0
1023          NaN
1024          NaN
1025         34.0

Наконец, запишите этот фрейм данных в файл формата Excel:

df.to_excel(file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...