Python - Построение столбца фрейма данных Pandas по условиям и запросам - PullRequest
0 голосов
/ 26 февраля 2019

Я должен построить столбец данных на основе некоторых условий.Я обычно использую функцию np.where (), но в моем случае, как и ожидалось, она не работает.Мне нужно добавить столбец в df2 на основе значений другого столбца, в нашем случае «Let».Когда оно равно «a», необходимо искать значение в другом фрейме данных, в частности, оно должно возвращать поле «Dates» в df1, где поле «Species» равно значению поля «Animal»в этом индексе («Позвольте» == а).Те же рассуждения для «Age» и «Mesure».Мой код:

df1 = pd.DataFrame({'Species' : ['Falcon', 
                     'Falcon','Falcon','tiger','Falcon','Dog'],
               'Dates': ['30-01-2019', '30-01-2019','30-01-2018', '30-01- 
                        2017', '30-01-2019', '30-01-2021'],
                   'Age'   : [ 2.55, 23, 31, 2, -12.55, 31]})



df2 = pd.DataFrame({'Animal' : ['Dog', 
              'Falcon','Dog','tiger','Falcon','cat'],
              'Mesure' : [2.55, 23, 31, 2,22,4],
               'Let' : ['a', 'b', 'a', 'a', 'a','b']})     

np.where(df2['Let'] != 'a', 1, df1[(df1['Species'] == df2['Animal'])& 
    (df1['Age'] == df2['Mesure'])]['Dates']) 

Вывод столбца:

 30-01-2019 (first record of df1)
 30-01-2021 (last record)
 30-01-2018 (third record)
 30-01-2017 (fourth record)

1 Ответ

0 голосов
/ 26 февраля 2019

Не уверен, поможет ли это.

new = df2.merge(df1, how = 'left', left_on = ['Animal','Mesure'], right_on = ['Species','Age'])
new = new.drop(['Species','Age'], axis = 1)
new.loc[new['Let'] == 'b','Dates'] = np.nan
new
...