簡體   English   中英

Pandas DataFrame-選擇和建立索引

[英]Pandas DataFrame - Selecting and Indexing

我有這個數據框熊貓對象

df = pd.DataFrame(randn(5,4),['A','B','C','D','E'],['W','X','Y','Z'])

我執行,這是A, B, C, D, EW, X, Y, Z列的表

在此處輸入圖片說明

這些W, X, Y, Z列中的每一個實際上都是一個Pandas系列, W是一個Pandas系列,並且XYZ都共享一個共同的索引。

基本上這就是一個數據框,一個共享索引的系列集。

直到這里沒關系。 :)

我可以這樣獲取W列的所有大於0的數據值:

請注意,C行消失了

在此處輸入圖片說明

但是我不明白以下幾點:

這句話是什么意思?

df[df['W']>0][['Y','X']]

結果是這樣的:

在此處輸入圖片說明

從理論上講,我要獲取所有大於0的數據幀W列值,而我前面只是根據什么條件或條件返回YX列?

為什么我在YX列上獲取這些值的原因是什么?

目前,我正在研究熊貓,我想知道這種現象的原因。

當你做

df[df['W']>0]

返回一個新的data frame 因此,當您在此數據幀的末尾放置[['Y', 'X']]時,基本上就是在這個新數據幀中進行簡單選擇。 將出現在XY列中的值僅是此df的XY的值。

更詳細地講, df['W']>0將返回一個Boolean序列,即具有值TrueFalse的序列。 當您執行df[df['W']>0]您正在使用此系列過濾df 輸出將是df行,其中df['W']>0返回True

正如您在第1 2個步驟中所解釋的:

  1. 返回Y,X列
df[['Y','X']]
  1. 返回W> 0的行
df[df['W']>0]
  1. 第三步:返回W> 0的行,然后選擇Y,X列
df[df['W']>0][['Y','X']]

基本上,首先將函數1應用於數據幀,然后在輸出2上應用。 因此,最終輸出。

它是功能的順序執行。

它在oneliner中執行兩個獨立的操作。

  1. (過濾行) df[df['W'] > 0]僅選擇W列為正的行
  2. (過濾列) df[['X', 'Y']]僅選擇感興趣的2列
  1. df['W']>0返回布爾列,其中列大於零( true )否則為false

  2. df[df['W']>0]df返回所有行,其中df['W']>0true

  3. df['X']返回數據框的列“ X”

  4. 同樣, df[['X', 'Y']]返回數據框的XY

如您所見,語法df[...]具有不同的含義:

  1. 通過傳遞與數據框相同長度的布爾序列,可以將其用於按行屏蔽數據框
  2. 它可以用於選擇單列(傳遞字符串)或一組列(傳遞字符串列表)

如果將此Python代碼與excel等進行比較,則可以聲明:

IF(W>0,"Value if True(return Y and X)", "Value if False ("")")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM