Как извлечь значения из двух матричного фрейма данных - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть данные pandas, как показано ниже.

import pandas as pd
df1=pd.DataFrame({'Group1':['a','b','c','d','e'],'Group2':["f","g","h","i","j"],'Group3':['k','L','m','n',"0"]})
print(df1)

df2=pd.DataFrame({'Group1':[0,0,2,1,0],'Group2':[1,2,0,0,0],'Group3':[0,0,0,1,1]})
print(df2)

df1 - это кадр данных имени ученика.df2 - это дата-кадр их тестовой оценки.

Например, если я сравниваю df1 и df2, g и c имеют тестовую оценку 2.

n, o, f, d имеют значение 1.

Остальные имеют значение 0.

Я хочу сравнить df1 и df2, а затем извлечь имена и баллы студентов.

Ожидаемый выходной кадр данных, как показано ниже.

df3=pd.DataFrame({'2':["g","c","NaN","NaN","NaN","NaN","NaN","NaN","NaN"],'1':["n","o","f","d","NaN","NaN","NaN","NaN","NaN"],'0':["k","L","m","h","i","j","a","b","e"]})
print(df3)

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

1 Ответ

0 голосов
/ 02 декабря 2018

Это pivot проблема после melt, я использую crosstab, если вы хотите узнать больше, пожалуйста, отметьте это

i=df2.melt().groupby('value').cumcount()    
c=df2.melt().value
v=df1.melt().value

pd.crosstab(index=i,columns=c,values=v,aggfunc='sum')

value  0     1     2
row_0               
0      a     d     c
1      b     f     g
2      e     n  None
3      h     0  None
4      i  None  None
5      j  None  None
6      k  None  None
7      L  None  None
8      m  None  None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...