gpt4 book ai didi

python - Python 中的分组特征矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 13:56:15 25 4
gpt4 key购买 nike

给定大型 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com