Извлечь человека из изображения или сделать фон прозрачным

Существуют также стратегии, которые вы можете использовать, чтобы избежать такого поведения, которое не связано с потерей дублированных данных, если, например, дублируются не все столбцы. Если у вас есть

In [1]: df = pd.DataFrame([[1, 3], [2, 4]], columns=['A', 'B'])

In [2]: df2 = pd.DataFrame([[1, 5], [1, 6]], columns=['A', 'C'])

, одним из способов было бы взять среднее значение дубликата (также можно взять сумму и т. Д.)

In [3]: df3 = df2.groupby('A').mean().reset_index()

In [4]: df3
Out[4]: 
     C
A     
1  5.5

In [5]: merged = pd.merge(df,df3,on=['A'], how='outer')

In [6]: merged
Out[204]: 
   A  B    C
0  1  3  5.5
1  2  4  NaN

Альтернативно, если вы имеют нечисловые данные, которые не могут быть преобразованы с помощью pd.to_numeric (), или если вы просто не хотите принимать среднее значение, вы можете изменить переменную слияния путем перечисления дубликатов. Однако эта стратегия будет применяться, когда дубликаты существуют в обоих наборах данных (что вызовет такое же проблемное поведение, а также является общей проблемой):

In [7]: df = pd.DataFrame([['a', 3], ['b', 4],['b',0]], columns=['A', 'B'])

In [8]: df2 = pd.DataFrame([['a', 3], ['b', 8],['b',5]], columns=['A', 'C'])

In [9]: df['count'] = df.groupby('A')['B'].cumcount()

In [10]: df['A'] = np.where(df['count']>0,df['A']+df['count'].astype(str),df['A'].astype(str))

In[11]: df
Out[11]: 
    A  B  count
0   a  3      0
1   b  4      0
2  b1  0      1

Сделайте то же самое для df2, сбросьте переменные count в df и df2 и слить на «A»:

In [16]: merged
Out[16]: 
    A  B  C
0   a  3  3        
1   b  4  8        
2  b1  0  5        

Несколько заметок. В этом последнем случае я использую .cumcount () вместо .duplicated, потому что это может быть случай, когда у вас есть несколько дубликатов для данного наблюдения. Кроме того, я использую .astype (str), чтобы преобразовать значения count в строки, потому что я использую команду np.where (), но используя pd.concat (), или что-то еще может разрешить для разных приложений.

Наконец, если это так, что только один набор данных имеет дубликаты, но вы все равно хотите их сохранить, вы можете использовать первую половину последней стратегии, чтобы различать дубликаты в результате слияния.

0
задан Sreejit Pillai 16 January 2019 в 18:19
поделиться