Python#2中的分组特征矩阵-后续
和以前没什么不同。我们可以从样本数据开始: DataFrame1:Python#2中的分组特征矩阵-后续,python,excel,pandas,feature-extraction,Python,Excel,Pandas,Feature Extraction,和以前没什么不同。我们可以从样本数据开始: DataFrame1: Name No. Comment Bob 2123320 Doesn't Matter Joe 2832883 Whatever John 2139300 Irrelevant Bob 2123320 Something John
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
我正在寻找一种方法来创建一个新的excel文件,该文件如下所示(预期结果):
(注意:它不需要有编号的标题,我这样做只是为了清楚和以后的解释)
基本上,我所做的是,非常类似于另一个,查找每个名称,然后查找每个名称,看看它有多少不同的编号。然后,它会选择那些拥有一定数量不同号码的人现在,我有一套“评论”和“报告”要找
({无关,无所谓,无所谓}和{Awesome,Solid,Perfect}分别[注:这只是评论/报告的一个子集])对于这些,如果出现,我希望有一个1或0,但仅针对每个编号。换句话说,我希望每个编号都有一个“组”列,标题为{无关,无所谓}和{Awesome,Solid,Perfect}对于每个值,如果该特定编号的人员出现,我希望为1,如果没有出现,则为0。
例如,在这个矩阵中,我们只看到John,因为他是唯一一个拥有超过1个不同编号的人。在第一组列中,只有无关和可怕的列的值为1,而其他列的值为0,而在第二组中,只有无关和完美的列的值为1。它只是列出了我想要的所有评论/报告({不相关,不管怎样}和{很棒,可靠,完美}),只列出一个编号,然后找出每个编号是否出现(1或0)。然后,它在一个新的“组”列中重复所有所需的注释/报告,以获得一个新编号,并找到现在出现的注释/报告
如果有什么不清楚的地方请告诉我,我真的非常感谢你的帮助
谢谢。试试:
df_out = df_out[df_out.groupby(['Name'])['No.'].transform(lambda x: x.nunique() > 1)]\
.set_index(['Name','No.'])['Comment'].str.get_dummies()\
.reindex(df_out.Comment, fill_value=0, axis=1)\
.sum(level=[0,1])\
.unstack()\
.swaplevel(0,1,axis=1)\
.sort_index(1)
print(df_out)
输出:
No. 2139300 \
Comment Awesome Doesn't Matter Good Great Irrelevant Perfect Regardless Solid
Name
John 1 0 0 0 1 0 0 0
No. 2234903 \
Comment Something Whatever Awesome Doesn't Matter Good Great Irrelevant
Name
John 0 0 0 0 0 0 0
No.
Comment Perfect Regardless Solid Something Whatever
Name
John 1 1 0 0 0
难以置信的惊人!多谢各位much@A.Code.1不客气。很抱歉,我让您重新发布,但有时看到所需的输出比文字更有意义。编码快乐,再次感谢。我真的很喜欢你的编码方法和描述。我还有一个问题,我还不清楚是否与当时的一个类似问题有关。你觉得你能试一下吗嘿,伙计。我真的很抱歉在这么短的时间内用这么多问题来轰炸你们,但我决定尝试给这个问题增加另一个维度。我决定创建一个新的帖子,明确描述输入和输出,如果您有时间查看,我将不胜感激:
No. 2139300 \
Comment Awesome Doesn't Matter Good Great Irrelevant Perfect Regardless Solid
Name
John 1 0 0 0 1 0 0 0
No. 2234903 \
Comment Something Whatever Awesome Doesn't Matter Good Great Irrelevant
Name
John 0 0 0 0 0 0 0
No.
Comment Perfect Regardless Solid Something Whatever
Name
John 1 1 0 0 0