我有一個數據幀(它是使用旋轉功能,這就是爲什麼它有C的產品和):寫分析列作爲一個整體的.apply函數?
c 367235 419895 992194
a
1999-02-06 Nan 9 Nan
2000-04-03 2 Nan Nan
1999-04-12 Nan Nan 4
1999-08-08 2 Nan Nan
1999-11-01 8 5 1
1999-12-08 Nan 3 Nan
1999-08-17 Nan Nan 10
1999-10-22 Nan 3 Nan
1999-03-23 Nan 4 Nan
2000-09-29 9 Nan Nan
1999-04-30 Nan Nan 1
2000-09-30 9 Nan Nan
我想在這個數據框的底部添加一個新行。新行中的每個單元格將評估它上面的列;如果該列包含數字9,8或3,則該單元格將評估爲「TRUE」。如果該列不包含這些數字,則該單元格將評估爲「FALSE」。最終,我的目標是使用下拉功能的「假」細胞刪除列,創建一個數據集,像這樣:
c 367235 419895
a
1999-02-06 Nan 9
2000-04-03 2 Nan
1999-04-12 Nan Nan
1999-08-08 2 Nan
1999-11-01 8 5
1999-12-08 Nan 3
1999-08-17 Nan Nan
1999-10-22 Nan 3
1999-03-23 Nan 4
2000-09-29 9 Nan
1999-04-30 Nan Nan
2000-09-30 9 Nan
TRUE TRUE
我的問題:
我可以寫,如果的一個評價的函數幾個數字在列表中,但我不能將這個函數寫入.apply。
也就是說,我發現,這適用於確定一組數字是在列表中:
我試圖修改它的應用功能如下:
def BIS(i):
L1 = [9,8,3]
if i in L1:
return "TRUE"
else:
return "FALSE"
df_wanted.apply(BIS, axis = 0)
這將導致一個錯誤: ( 'A系列的真值是模糊使用a.empty,a.bool(),a.item,a.any()。' u'occured在指數367235' )
這使我認爲儘管.apply將整列作爲輸入,但它不能彙總所有單個單元格的真值並得出關於該列的總真值。我查了一下a.any和a.bool,看起來非常有用,但我不知道該把它們粘在哪裏?例如,這並不工作:
df_wanted.apply.any(BIS, axis = 0)
也沒有這個
df_wanted.apply(BIS.any, axis = 0).
任何人都可以點我在正確的方向?提前感謝
完成的數據集看起來很美 - 只是 我想要的是。邏輯看起來也是正確的,但我仍然對Python非常無知,無法重新創建結果。當我把你的代碼,我得到:「空Dataframe列:[]索引:[1999-02-06 00:00:00,... [長日期列表]。任何想法我錯過了什麼步驟? – oymonk
它是可能在你的原始數據幀中數據類型是數字,嘗試用'[9,8,3]'替換'['9','8','3']' – Psidom
whoohoo它工作了!!!!!非常感謝你@Psidom !!!!! – oymonk