我的問題在下面的視頻鏈接描述:如何基於另一個在熊貓中缺失值的列創建新列?
https://www.youtube.com/watch?v=nk5tBosK0iU
我不知道爲什麼我不能得到的條件(df[condition]
),其中condition
是一個變量,NaN值工作。
我的問題在下面的視頻鏈接描述:如何基於另一個在熊貓中缺失值的列創建新列?
https://www.youtube.com/watch?v=nk5tBosK0iU
我不知道爲什麼我不能得到的條件(df[condition]
),其中condition
是一個變量,NaN值工作。
您需要通過pandas.isnull
檢查標NaN
在自定義函數,但速度更快的解決方案是採用雙numpy.where
:
import pandas as pd
import numpy as np
df = pd.DataFrame({'CloseDelta':[np.nan,-0.5,0.5],
'B':[0,1,0]})
print (df)
B CloseDelta
0 0 NaN
1 1 -0.5
2 0 0.5
def f(x):
if (pd.isnull(x)):
return 0
elif (x<0):
return -1
else:
return 1
df['new'] = np.where(df.CloseDelta.isnull(), 0, np.where(df.CloseDelta<0, -1, 1))
df['new1'] = df.CloseDelta.apply(f)
print (df)
B CloseDelta new new1
0 0 NaN 0 0
1 1 -0.5 -1 -1
2 0 0.5 1 1
時序:
#[300000 rows x 3 columns]
df = pd.concat([df]*100000).reset_index(drop=True)
In [28]: %timeit np.where(df.CloseDelta.isnull(), 0, np.where(df.CloseDelta<0, -1, 1))
100 loops, best of 3: 1.99 ms per loop
In [29]: %timeit df.CloseDelta.apply(f)
1 loop, best of 3: 245 ms per loop
謝謝jezrael ...讓我試試... 讓我們看看,如果我的新專欄,df。[' New'] = df。['CloseDelta']。apply(function)works ... :) – clueple388
如果我的回答很有幫助,請不要忘記[accept](http://meta.stackexchange.com/a/5235/295067)。謝謝。 – jezrael
非常感謝jezrael ... 只包括你在這個視頻中所做的(用你的名字引用): https://www.youtube.com/watch?v=vQuerSKl1as – clueple388
只是另一側的問題...我怎麼能可以在新瀏覽器窗口中打開的Stackoverflow的鏈接? – clueple388
有意思的是,您可以製作帶有您問題的視頻,但不是谷歌的答案,或者就此而言,請在此輸入視頻......我很抱歉,我無法對此做出視頻回覆。 – Kartik
謝謝Kartik ...在我拍攝問題視頻之前,我搜索了答案(嘗試了np.where,lambda apply方法)...我也嘗試從iPython Notebook輸入(並粘貼)我的代碼(和結果)。 。但仍然無法獲得格式正確(想學習如何獲得正確的表格格式在Stackoverflow雖然) – clueple388