如何在不相等列之间找到相等值的索引panda



我有3个数据集,(《权力的游戏》的(对于每一场战斗,我都需要打印";忠诚;(来自character_deaths数据帧(;已婚;(来自character_predictions数据帧(。

所以实际上我需要在两个不同的数据集中的两个不同列中找到相同名称的索引。

我试过类似的东西

import pandas as pd
battles=pd.read_csv('https://github.com/TheMLGuy/Game-of-Thrones-Dataset/raw/master/battles.csv')
character_deaths=pd.read_csv('https://github.com/TheMLGuy/Game-of-Thrones-Dataset/raw/master/character-deaths.csv')
character_predictions=pd.read_csv('https://github.com/TheMLGuy/Game-of-Thrones-Dataset/raw/master/character-predictions.csv')


dfnd_chr_idx=[np.where(character_predictions.loc[:,'name']==battles.loc[i,'defender_king'])[0] for i in range(len(battles))]
#and to take:
character_deaths[dfnd_chr_idx,'Allegiances']..

但效果并不好——如果你有更优雅的解决方案,我很乐意听到。

您可以通过合并进行检查:

import pandas as pd
battles=pd.read_csv('https://github.com/TheMLGuy/Game-of-Thrones-Dataset/raw/master/battles.csv')
character_deaths=pd.read_csv('https://github.com/TheMLGuy/Game-of-Thrones-Dataset/raw/master/character-deaths.csv')
character_predictions=pd.read_csv('https://github.com/TheMLGuy/Game-of-Thrones-Dataset/raw/master/character-predictions.csv')

merged = pd.merge(battles, character_predictions, right_on=['name'], left_on =['defender_king'], how='inner')

它给出:

name_x  year  battle_number  
0    Battle of the Golden Tooth   298              1   
1   Battle at the Mummer's Ford   298              2   
2            Battle of Riverrun   298              3   
3                 Sack of Darry   298              7   
4         Battle of Moat Cailin   299              8   
5      Battle of Deepwood Motte   299              9   
6     Battle of the Stony Shore   299             10   
7          Battle of Winterfell   299             12   
8            Sack of Winterfell   299             14   
9           Battle of the Fords   299             17   
10      Battle of the Ruby Ford   299             24   
11              The Red Wedding   299             26   
12            Siege of Riverrun   300             36   
13           Siege of Raventree   300             37   
14         Siege of Storm's End   299             16   
15       Battle of Castle Black   300             28   
16  Second Seige of Storm's End   300             34   
17         Siege of Dragonstone   300             35   
attacker_king      defender_king attacker_1 attacker_2  
0   Joffrey/Tommen Baratheon         Robb Stark  Lannister        NaN   
1   Joffrey/Tommen Baratheon         Robb Stark  Lannister        NaN   
2   Joffrey/Tommen Baratheon         Robb Stark  Lannister        NaN   
3   Joffrey/Tommen Baratheon         Robb Stark  Lannister        NaN   
4        Balon/Euron Greyjoy         Robb Stark    Greyjoy        NaN   
5        Balon/Euron Greyjoy         Robb Stark    Greyjoy        NaN   
6        Balon/Euron Greyjoy         Robb Stark    Greyjoy        NaN   
7        Balon/Euron Greyjoy         Robb Stark    Greyjoy        NaN   
8   Joffrey/Tommen Baratheon         Robb Stark     Bolton    Greyjoy   
9   Joffrey/Tommen Baratheon         Robb Stark  Lannister        NaN   
10  Joffrey/Tommen Baratheon         Robb Stark  Lannister        NaN   
11  Joffrey/Tommen Baratheon         Robb Stark       Frey     Bolton   
12  Joffrey/Tommen Baratheon         Robb Stark  Lannister       Frey   
13  Joffrey/Tommen Baratheon         Robb Stark    Bracken  Lannister   
14         Stannis Baratheon    Renly Baratheon  Baratheon        NaN   
15         Stannis Baratheon       Mance Rayder  Free folk     Thenns   
16  Joffrey/Tommen Baratheon  Stannis Baratheon  Baratheon        NaN   
17  Joffrey/Tommen Baratheon  Stannis Baratheon  Baratheon        NaN   
attacker_3 attacker_4     defender_1  ... isAliveHeir  isAliveSpouse  
0         NaN        NaN          Tully  ...         1.0            NaN   
1         NaN        NaN      Baratheon  ...         1.0            NaN   
2         NaN        NaN          Tully  ...         1.0            NaN   
3         NaN        NaN          Darry  ...         1.0            NaN   
4         NaN        NaN          Stark  ...         1.0            NaN   
5         NaN        NaN          Stark  ...         1.0            NaN   
6         NaN        NaN          Stark  ...         1.0            NaN   
7         NaN        NaN          Stark  ...         1.0            NaN   
8         NaN        NaN          Stark  ...         1.0            NaN   
9         NaN        NaN          Tully  ...         1.0            NaN   
10        NaN        NaN          Stark  ...         1.0            NaN   
11        NaN        NaN          Stark  ...         1.0            NaN   
12        NaN        NaN          Tully  ...         1.0            NaN   
13        NaN        NaN      Blackwood  ...         1.0            NaN   
14        NaN        NaN      Baratheon  ...         NaN            1.0   
15     Giants        NaN  Night's Watch  ...         NaN            NaN   
16        NaN        NaN      Baratheon  ...         1.0            NaN   
17        NaN        NaN      Baratheon  ...         1.0            NaN   
isMarried isNoble   age  numDeadRelations  boolDeadRelations  isPopular  
0           0       0   NaN                 7                  1          1   
1           0       0   NaN                 7                  1          1   
2           0       0   NaN                 7                  1          1   
3           0       0   NaN                 7                  1          1   
4           0       0   NaN                 7                  1          1   
5           0       0   NaN                 7                  1          1   
6           0       0   NaN                 7                  1          1   
7           0       0   NaN                 7                  1          1   
8           0       0   NaN                 7                  1          1   
9           0       0   NaN                 7                  1          1   
10          0       0   NaN                 7                  1          1   
11          0       0   NaN                 7                  1          1   
12          0       0   NaN                 7                  1          1   
13          0       0   NaN                 7                  1          1   
14          1       1  22.0                 2                  1          1   
15          0       0   NaN                 0                  0          1   
16          0       0   NaN                 4                  1          1   
17          0       0   NaN                 4                  1          1   
popularity isAlive  
0      1.00000       0  
1      1.00000       0  
2      1.00000       0  
3      1.00000       0  
4      1.00000       0  
5      1.00000       0  
6      1.00000       0  
7      1.00000       0  
8      1.00000       0  
9      1.00000       0  
10     1.00000       0  
11     1.00000       0  
12     1.00000       0  
13     1.00000       0  
14     1.00000       0  
15     0.70903       1  
16     1.00000       1  
17     1.00000       1  
[18 rows x 58 columns]

最新更新