Объединение данных данных Pandas

У меня есть конкатенированный фрейм данных панд из 4-х тактовых кадров:

In [121]: all Out[121]: EHNS 102P Y NaN NaN NaN 103R Y NaN NaN NaN 102P NaN NaN Y NaN 103R NaN NaN Y NaN 109F NaN NaN Y NaN 103R NaN Y NaN NaN 109F NaN Y NaN NaN 102P NaN NaN NaN Y 103R NaN NaN NaN Y 109F NaN NaN NaN Y 

Я хочу объединить это в dataframe следующим образом:

  EHNS 102P Y NAN YY 103R YYYY 109F NAN YYY 

Как я могу объединить их на основе all.index?

Сделайте groupby по индексу (я исхожу из данных, которые вы опубликовали, что значения 102P... находятся в индексе). И подсчитайте значения. Это вернет DataFrame с нулями и единицами. Просто замените их соответствующими значениями.

 >>> ndf = df.groupby(level=0).count() >>> ndf[ndf == 1] = 'Y' >>> ndf[ndf == 0] = np.nan >>> ndf EHNS label 102P Y NaN YY 103R YYYY 109F NaN YYY 

Если у вас есть повторения, просто измените условие из ndf[ndf == 1] на ndf[ndf > 0] .

Но почему вы объединяете кадры данных, а не объединяете их? Пример:

 >>> df1 EHNS 0 102P Y NaN NaN NaN 103R Y NaN NaN NaN >>> df2 EHNS 0 102P NaN NaN Y NaN 103R NaN NaN Y NaN 109F NaN NaN Y NaN ... >>> reduce(lambda first, second: first.combine_first(second), [df1, df2, df3, df4], pd.DataFrame()) EHNS 0 102P Y NaN YY 103R YYYY 109F NaN YYY