Python中的分组特征矩阵
给定大量excel数据(xlsx、csv或xls),是否可以对内容进行分组,然后将其作为特征矩阵,如下面的示例所示 采取: DataFrame1:Python中的分组特征矩阵,python,excel,pandas,dataframe,Python,Excel,Pandas,Dataframe,给定大量excel数据(xlsx、csv或xls),是否可以对内容进行分组,然后将其作为特征矩阵,如下面的示例所示 采取: DataFrame1: Name No. Comment Bob 2123320 Doesn't Matter Joe 2832883 Whatever John 2139300 Irrelevant Bob 212
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
因此,基本上它会查找每个名称,然后查找每个名称有多少不同的编号,对于每个不同的编号,它会搜索“评论”和“报告”是什么,然后查找一些特定的评论
{无关,不管,不管}和报告{很棒,可靠,完美}它检查它是否出现。如果是,则输出1,如果不是,则在excel表格中输出0,如上所述。虽然鲍勃出现了两次,但因为两次他都有相同的号码,这不算,约翰是唯一相关的人。因此,约翰的2139300号,他对无关紧要的和令人敬畏的有1分,对他的2234903号,他对不顾一切的和完美的有1分
新的:
另外,由于格式有点奇怪,我的意思是将所有内容放在一行中
澄清一下:这似乎与我之前提出的一个问题相似,但不同。我为这个问题创建了一个新问题,因为我被告知这样做
非常感谢。您可以尝试以下内容:
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
首先将“报告”列重命名为“注释”,以对齐concat的数据帧:
df_out = pd.concat([df1,df2.rename(columns={'Report':'Comment'})],ignore_index=False)
筛选数据框中包含多个编号的名称。然后使用get\u 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
这真是太棒了,非常感谢。一个简单的问题:如果我只想查找3条评论,而不是所有评论,我将如何选择一些特定的评论来查找。就像我不是{无所谓,无所谓,无所谓,无所谓},我只是想{无所谓,无所谓}。我需要为此制作一个字典吗?您可以只更改reindex部分,而不使用df.columns,因为所有列都使用['not Matter','Whatever','…]嘿。还有一个问题。我还想把数据交给No。类似于将一个编号的所有注释分组,然后重复另一个编号。我想我在OP中也提到了这一点,但我添加了一些澄清。@a.Code.1你能用样本数据和预期结果开始一个新问题吗?如果你给出了预期的结果,就更容易理解你的需求。谢谢。当然,非常感谢。我发布了一个新问题,题为:分组特征矩阵#2-后续。再次感谢。