查找唯一值出现的最后一列索引

2024-10-02 18:16:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,其中一个在一列中包含名称:

https://i.stack.imgur.com/DMhxx.png

我想找出名称在另一个表中的最后一列索引:

https://i.stack.imgur.com/geCKV.png

例如:

  • 雅各布2
  • 破折号3
  • 提姆1
  • 约翰5
  • 坎耶2号

Tags: 数据https名称compngstackimgur破折号
2条回答

这是我给你的答案: .last\u valid\u index()是一个方便的函数,可用于您的任务。不幸的是,它找到的是最后一行,而不是最后一列。因此,我在前面转置了dataframe,以便交换行和列,然后可以使用.last\u valid\u index()

 import pandas as pd

#creating first df
names = pd.DataFrame()
names["Names"] = ["Jacob","Dash","Tim","John","Kanye"]

#creating second df
table = pd.DataFrame()
table[0] = ["Jacob","NA","NA","NA","NA"]
table[1] = ["NA","Dash","Jacob","NA","NA"]
table[2] = ["NA","NA","Tim","NA","Dash"]
table[3] = ["Tim","NA","NA","John","NA"]

#find last occurrence
table_T = table.transpose() #create transpose copy of df
last_occurrences = [table_T.where(table_T==name).last_valid_index() for name in names["Names"]]
names["LastOcc"] = last_occurrences

结果添加到第一个数据帧中: see picture

import pandas as pd
df1 = pd.DataFrame(["Jacob","Dash","Tim","John","Kanye"],columns=['Names'])

li = [["Jacob","NA","NA","NA","NA","John"], ["NA","NA","NA","Dash","NA","NA"], \
      ["Tim","NA","Jacob","NA","NA","NA"], ["NA","Tim","NA","NA","Dash","NA"], \
     ["Kanye","NA","Kanye","NA","NA","NA"]]
df2 = pd.DataFrame(li)

print([(df2.isin([f"{name}"]).any()).nonzero()[0][-1] for name in df1["Names"]])

相关问题 更多 >