Нахождение последнего столбца индекса, что уникальное значение появляется - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть 2 Pandas DataFrames, один из которых содержит имена в одном столбце:

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

И я хочу найти, какой индекс последнего столбца имя появляется в этой другой таблице:

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

например:

  • Иаков 2
  • Тире 3
  • Тим 1
  • Джон 5
  • Канье 2

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019
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"]])
0 голосов
/ 24 сентября 2019

Это мой ответ для вас: .last_valid_index () - это удобная функция, которую можно использовать для вашей задачи.К сожалению, он находит последний ряд, а не последний столбец.Поэтому раньше я переставляю фрейм данных, чтобы обмениваться строками и столбцами, затем можно использовать .last_valid_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

Результат добавлен в первый фрейм данных: см. Рисунок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...