[英]Pandas DataFrame indexing, Selecting rows with specific columns that are NaN values
[英]Pandas DataFrame - Selecting and Indexing
我有這個數據框熊貓對象
df = pd.DataFrame(randn(5,4),['A','B','C','D','E'],['W','X','Y','Z'])
我執行,這是A, B, C, D, E
和W, X, Y, Z
列的表
這些W, X, Y, Z
列中的每一個實際上都是一個Pandas系列, W
是一個Pandas系列,並且X
和Y
和Z
都共享一個共同的索引。
基本上這就是一個數據框,一個共享索引的系列集。
直到這里沒關系。 :)
我可以這樣獲取W列的所有大於0的數據值:
請注意,C行消失了
但是我不明白以下幾點:
這句話是什么意思?
df[df['W']>0][['Y','X']]
結果是這樣的:
從理論上講,我要獲取所有大於0的數據幀W
列值,而我前面只是根據什么條件或條件返回Y
和X
列?
為什么我在Y
和X
列上獲取這些值的原因是什么?
目前,我正在研究熊貓,我想知道這種現象的原因。
當你做
df[df['W']>0]
返回一個新的data frame
。 因此,當您在此數據幀的末尾放置[['Y', 'X']]
時,基本上就是在這個新數據幀中進行簡單選擇。 將出現在X
和Y
列中的值僅是此df的X
和Y
的值。
更詳細地講, df['W']>0
將返回一個Boolean
序列,即具有值True
或False
的序列。 當您執行df[df['W']>0]
您正在使用此系列過濾df
。 輸出將是df
行,其中df['W']>0
返回True
。
正如您在第1 2個步驟中所解釋的:
df[['Y','X']]
df[df['W']>0]
df[df['W']>0][['Y','X']]
基本上,首先將函數1應用於數據幀,然后在輸出2上應用。 因此,最終輸出。
它是功能的順序執行。
它在oneliner中執行兩個獨立的操作。
df[df['W'] > 0]
僅選擇W列為正的行 df[['X', 'Y']]
僅選擇感興趣的2列 df['W']>0
返回布爾列,其中列大於零( true
)否則為false
df[df['W']>0]
從df
返回所有行,其中df['W']>0
為true
df['X']
返回數據框的列“ X”
同樣, df[['X', 'Y']]
返回數據框的X
和Y
列
如您所見,語法df[...]
具有不同的含義:
如果將此Python代碼與excel等進行比較,則可以聲明:
IF(W>0,"Value if True(return Y and X)", "Value if False ("")")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.