【问题标题】:How to extract values from the two matrix dataframe如何从两个矩阵数据框中提取值
【发布时间】:2018-12-02 06:33:51
【问题描述】:

我有一个如下的熊猫数据框。

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)

我的实际数据框比上述示例大得多,我想知道有什么好的方法可以在不指定单元格的情况下进行提取。 对你的帮助表示感谢。 谢谢。

【问题讨论】:

  • 请说明您最初的努力以及哪里出了问题。
  • 我不太清楚你想要达到什么目的。

标签: python pandas dataframe matrix


【解决方案1】:

这是pivotmelt之后的问题,我用的是crosstab,如果你想了解更多,请查看this

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

【讨论】:

  • 非常感谢,W-B!这超出了我的想象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
相关资源
最近更新 更多