Как получить доступ к столбцу, имя которого я не могу получить в цепочке

Я предваряю это, сказав, что это игрушечный пример. У меня есть мотивы для этого, поскольку он сидит в середине некоторых других цепных операций.

У меня DataFrame что-то вроде

df Out[234]: host1 host2 host3 dates 2014-02-02 1 3 4 2014-02-03 5 2 1 2014-02-04 2 5 6 2014-02-05 4 6 1 2014-02-06 3 2 1 

Я пытаюсь создать новый DataFrame, состоящий из двух столбцов, причем хосты являются индексом – один столбец – это значения в последней строке, второй – то, являются ли эти значения в последней строке больше 1. Затем мой соответствующий вывод должен выглядеть как:

 newdf Out[235]: dates 2014-02-06 passes host1 3 True host2 2 True host3 1 False 

Как я могу это сделать с помощью цепочки?


Думаю, что я просто сделал вывод о выходе сам по себе.

 newdf = df.tail(1).T newdf['passes'] = newdf.iloc[:, 0] > 1 

Причина, по которой я изо всех сил пытаюсь сделать это с помощью цепочечных операций, состоит в том, что, как только я pandas.tslib.Timestamp хвост, имя столбца становится типа pandas.tslib.Timestamp ,

 df.tail(1).T Out[236]: dates 2014-02-06 host1 3 host2 2 host3 1 

к которому я не могу получить доступ к переименованию с rename , и поэтому я не могу получить к нему доступ в некоторой логической операции в assign для создания нового столбца «pass».

Данные :

Моя игрушка DataFrame может быть сгенерирована с помощью

 df = pd.DataFrame(dict(dates=pd.date_range('2014-02-02', periods=5), host1=[1, 5, 2, 4, 3], host2=[3, 2, 5, 6, 2], host3=[4, 1, 6, 1, 1])).set_index('dates') 

3 Solutions collect form web for “Как получить доступ к столбцу, имя которого я не могу получить в цепочке”

Вы можете использовать lambda выражение в assign , где параметр является результатом предыдущей операции с цепочкой:

 df.tail(1).T.assign(passes = lambda x: x.iloc[:,0] > 1) #dates 2014-02-06 00:00:00 passes #host1 3 True #host2 2 True #host3 1 False 

вы можете попробовать следующее:

 In [110]: df.tail(1).T.assign(passes=df.tail(1).values[0] > 1) Out[110]: dates 2014-02-06 00:00:00 passes host1 3 True host2 2 True host3 1 False 

Я хочу оставить комментарий к решению Psidom и не публиковать новое решение (но пока не могу оставлять комментарии из-за недостаточной репутации). Это тоже работает

 df.tail(1).T.assign(passes = lambda x: x.gt(1)) 
  • Pandas csv-import: сохранить ведущие нули в столбце
  • ANOVA в python с использованием рамки данных pandas с statsmodels или scipy?
  • Панды оставили внешнее соединение нескольких кадров данных на нескольких столбцах
  • ошибка установки pandas в pip
  • Нужна помощь с скриптом python (pandas)
  • Перемещение непустых ячеек влево в pandas DataFrame
  • индекс и столбец для максимального значения в кадре данных панд
  • Как рассчитать скользящее среднее с пользовательскими весами в пандах?
  • Python - лучший язык программирования в мире.