簡體   English   中英

從pandas dataframe獲取特定行作為系列

[英]Get particular row as series from pandas dataframe

我們如何將特定的過濾行作為系列?

示例數據幀:

>>> df = pd.DataFrame({'date': [20130101, 20130101, 20130102], 'location': ['a', 'a', 'c']})
>>> df
       date location
0  20130101        a
1  20130101        a
2  20130102        c

我需要選擇locationc的行作為一個系列

我試過了:

row = df[df["location"] == "c"].head(1)  # gives a dataframe
row = df.ix[df["location"] == "c"]       # also gives a dataframe with single row

在任何一種情況下,我都不能將該行作為系列。

使用將從數據框中刪除一個維度的squeeze函數:

df[df["location"] == "c"].squeeze()
Out[5]: 
date        20130102
location           c
Name: 2, dtype: object

當設置為True時, DataFrame.squeeze方法的作用與read_csv函數的squeeze參數相同:如果結果數據幀是1-len數據幀,即它只有一個維度(列或行),則對象是擠壓到較小尺寸的物體。

在您的情況下,您從DataFrame獲得一個Series對象。 如果將Panel壓縮到DataFrame,則適用相同的邏輯。

擠壓在您的代碼中是明確的,並清楚地顯示您的意圖“拋棄”手中的對象,因為它的尺寸可以投影到較小的尺寸。

如果數據框有多個列或行,則squeeze無效。

您可以使用整數索引( iloc()函數)獲取第一行:

>>> df[df["location"] == "c"].iloc[0]
date        20130102
location           c
Name: 2, dtype: object

暫無
暫無

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

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