2017-01-13 7 views
1

Скажем, у меня есть dataframes:Создать dataframe панды с колоннами на основе сравнения других dataframes

df1: 
a b 
3 0 
4 5 
1 20 

df2: 
c d 
2 7 
5 3 
0 9 

Я хочу, чтобы получить DF3 с 2 колонками. Каждый рассчитывается как это (псевдокод):

if df1 > df2: df3 = 1 
else: df3 = 0 

Все столбцы в df1 должны быть по сравнению с колоннами в df2 соответственно.

Так, наконец, я хочу получить:

df3: 
e f 
1 0 
0 1 
1 1 

Я думал, что DF3 = df1.gt (df2) будет делать это, но это не так. Это дало мне 4 колонки. И я не хочу использовать лямбды, потому что мои реальные данные имеют почти 500000 строк х 100 столбцов. Спасибо.

ответ

1

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

pd.DataFrame(df1.values > df2.values, columns=list("ef")).astype(int) 

enter image description here

+0

ли трюк. Благодарю. – shda

Смежные вопросы