簡體   English   中英

以字符串形式返回Pandas多索引數據框中的單元格值

[英]Return cell value in Pandas multi-index dataframe as string

我正在嘗試從大約11.000行和10列的數據框中返回單個單元格值:

df = pd.DataFrame({ 'A' : ('foo', 'foo', 'bar', 'bar'),
                    'B' : ('horse', 'car', 'horse', 'car'),
                    'C' : ('red', 'green', 'blue', 'black')})
df
     A      B      C
 0  foo  horse    red
 1  foo    car  green
 2  bar  horse   blue
 3  bar    car  black

我嘗試了loc的幾個版本,但總是得到一個返回的對象,而不是實際值(“綠色”)。 例如:

df.loc[(df['A'] == 'foo') & (df['B'] == 'car'), 'C']

收益:

1    green
Name: C, dtype: object

結果是正確的,但它作為對象而不是字符串返回。 我還嘗試將A和B列設置為多索引框架中的索引。 位置代碼會更容易,但結果相同。

那么如何將值作為字符串而不是作為對象來獲取呢?

您正在制作系列,想要第一個對象。

您可以將pd.Series等效為長度為1的列表: ['green'] 如果是列表,則將執行list[0]

但是,pandas系列子集基於索引,因此您無法執行此操作。 要在不知道序列索引的情況下進行子集化,請使用iloc[0]

df.loc[(df['A'] == 'foo') & (df['B'] == 'car'), 'C'].iloc[0]

'green'

使用item

pandas.Series.item

Series.item()以python標量的形式返回基礎數據的第一個元素

df.loc[(df['A'] == 'foo') & (df['B'] == 'car'), 'C'].item()

輸出:

'green'

暫無
暫無

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

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