我需要一些帮助使用熊猫数据帧。 数据框如下:
group col1 col2 name
1 dog 40 canidae
1 dog 40 canidae
1 dog 40 canidae
1 dog 40 canidae
1 dog 40
1 dog 40 canidae
1 dog 40 canidae
2 frog 85 dendrobatidae
2 frog 89 leptodactylidae
2 frog 89 leptodactylidae
2 frog 82 leptodactylidae
2 frog 89
2 frog 81
2 frog 89 dendrobatidae
3 horse 87 equidae1
3 donkey 76 equidae2
3 zebra 67 equidae3
4 bird 54 psittacidae
4 bird 56
4 bird 34
5 bear 67
5 bear 54
我想得到的是添加一个列“consudence\u name”来获得:
group col1 col2 name consensus_name
1 dog 40 canidae canidae
1 dog 40 canidae canidae
1 dog 40 canidae
1 dog 40 canidae canidae
1 dog 40 canidae canidae
2 frog 85 dendrobatidae leptodactylidae
2 frog 89 leptodactylidae leptodactylidae
2 frog 89 leptodactylidae leptodactylidae
2 frog 82 leptodactylidae leptodactylidae
2 frog 89 leptodactylidae
2 frog 81 leptodactylidae
2 frog 89 dendrobatidae leptodactylidae
3 horse 87 equidae1 equidae3
3 donkey 76 equidae2 equidae3
3 zebra 67 equidae3 equidae3
4 bird 54 psittacidae psittacidae
4 bird 56 psittacidae
4 bird 34 psittacidae
5 bear 67 NA
5 bear 54 NA
为了得到每个组的新列,我得到了组中最具代表性的名称。你知道吗
对于group1
,有4行名为'canidae'
,一行没有,因此对于每一行,我将'canidae'
写在consensus_name
列中
对于group2
,有2行名为'dendrobatidae'
,2行没有,3行名为'leptodactylidae'
,因此对于每一行,我都在consensus_name
列中写入leptodactylidae'
。
对于group3
有3行具有不同的名称,因此由于没有一致性,我得到的名称是最低的col2
编号,因此我在consensus_name
列中写入'equidae3'
。
对于组4,只有一行有信息,所以它是group4
的一致名称,所以我在consensus_name
列中写psittacidae
。
对于group5
没有任何信息,只需在consensus_name
列中写入NA即可。
有没有人想到要和熊猫一起做?感谢您的帮助:)
anky的输出=
group col1 col2 name consensus_name
0 1 dog 40 canidae canidae
1 1 dog 40 canidae canidae
2 1 dog 40 canidae canidae
3 1 dog 40 canidae canidae
4 1 dog 40 NaN canidae
5 1 dog 40 canidae canidae
6 1 dog 40 canidae canidae
7 2 frog 85 dendrobatidae dendrobatidae
8 2 frog 89 leptodactylidae leptodactylidae
9 2 frog 89 leptodactylidae leptodactylidae
10 2 frog 82 leptodactylidae leptodactylidae
11 2 frog 89 NaN leptodactylidae
12 2 frog 81 NaN leptodactylidae
13 2 frog 89 dendrobatidae dendrobatidae
14 3 horse 87 equidae1 equidae1
15 3 donkey 76 equidae2 equidae2
16 3 zebra 67 equidae3 equidae3
17 4 bird 54 psittacidae psittacidae
18 4 bird 56 NaN psittacidae
19 4 bird 34 NaN psittacidae
20 5 bear 67 NaN NaN
21 5 bear 54 NaN NaN
使用
pandas.DataFrame.Groupby.Series.transform
并将max
函数传递给它:编辑指出后一般不适用:
您需要定义自己的函数。确保用
NaN
替换空字符串,这样就不会考虑它们。transform
在基于多个列的计算中会变得很棘手,因此应该使用groupby并将结果映射回原始列。你知道吗输出:
我们唯一没有明确定义的边情况是,当模态值和的最小值col2有联系时会发生什么。目前,在这些情况下,它将选择索引最低的名称(数据帧中最先出现的名称)。你知道吗
相关问题 更多 >
编程相关推荐