python - Python 中的分组特征矩阵

标签 python excel pandas dataframe

给定大型 Excel 数据(xlsx、csv 或 xls),是否可以对事物进行分组,然后将其设为特征矩阵,如下例所示。

采取:

数据帧1:

Name         No.        Comment    
Bob        2123320     Doesn't Matter   
Joe        2832883     Whatever           
John       2139300     Irrelevant        
Bob        2123320     Something          
John       2234903     Regardless

数据帧2:

Name          No.          Report    
Bob        2123320         Great 
Joe        2832883         Solid           
John       2139300        Awesome        
Bob        2123320         Good          
John       2234903        Perfect

我基本上正在寻找一种方法,只选择一个名称出现两次的号码,然后列出一个特征矩阵,以确定该号码是否出现特定的评论/报告,如下所示:

Name Irrelevant Whatever Regardless Awesome Solid Perfect  Irrelevant \
John    1          0       0          1      0     0         0
Name Whatever Regardless Awesome Solid Perfect  
John    0       1         0        0      1

所以基本上它会查找每个名称,然后对于每个名称,它会查看它有多少个不同的编号,对于每个不同的编号,它会搜索“评论”和“报告”的内容”然后是一些具体的评论 {不相关,无论如何,无论如何}并报告{真棒,可靠,完美}它检查它是否出现。如果是,则在 Excel 工作表中输出 1,如果不是,则输出 0,如上所示。尽管鲍勃出现了两次,但由于两次他的号码相同,所以不算数,约翰是唯一相关的人。因此,对于约翰的编号 2139300,他有 1 代表不相关和很棒,而对于他的编号 2234903,他有 1 代表不顾一切和完美。

新:

.      -----------------------2139300---------------------  2234903----                    
Name Irrelevant Whatever Regardless Awesome Solid Perfect  Irrelevant \
John    1          0       0          1      0     0         0
      --------------------2234903-------------
Name Whatever Regardless Awesome Solid Perfect  
John    0       1         0        0      1

此外,由于格式有点奇怪,我的意思是把它们全部放在一行。

澄清一下:这看起来与我之前提出的问题相似,但又有所不同。我为此问题创建了一个新问题,因为我被告知这样做。

非常感谢。

最佳答案

你可以尝试这样的事情:

首先将“报告”列重命名为“注释”以对齐数据帧以进行连接:

df_out = pd.concat([df1,df2.rename(columns={'Report':'Comment'})],ignore_index=False)

过滤数据帧以查找具有多个编号的名称,然后使用get_dummies:

df_out[df_out.groupby(['Name'])['No.'].transform(lambda x: x.nunique() > 1)]\
   .set_index('Name')['Comment'].str.get_dummies().sum(level=0)\
   .reindex(df_out.Comment, fill_value=0, axis=1)

输出:

Comment  Doesn't Matter  Whatever  Irrelevant  Something  Regardless  Great  \
Name                                                                          
John                  0         0           1          0           1      0   

Comment  Solid  Awesome  Good  Perfect  
Name                                    
John         0        1     0        1

关于python - Python 中的分组特征矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49581703/

相关文章:

excel - 在 PowerPIvot/DAX 中获取 PERCENTRANK.INC

vba - 如何在 Office 文件中嵌入自定义功能区的图像

python - Pandas 如何截断分钟,秒 pandas.tslib.Timestamp

python - 计算每天发生的观察次数

python - 从 pandas 列中列表的开头删除 n 个元素,其中 n 是另一列中的值

python - 我怎么知道我是在导入 tensorflow 还是 tensorflow-gpu?

python - 检查一个字符串是否包含来自不同数据框的另一个字符串 - Python

python - 如何找到与 pandas 数据帧的其他行具有最小总距离的行

python - 如何最合理地分解行,在Python中保留 "within 80 chars"?

linux - 将输出转换为 Excel 工作表的脚本