574

データ フレームから正確に 1 行を抽出する条件を作成しました。

d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]

ここで、特定の列から値を取得したいと思います。

val = d2['col_name']

しかし、結果として、1 つの行と 1 つの列 (つまり、 1 つのセル)を含むデータ フレームが得られます。それは私が必要とするものではありません。1 つの値 (1 つの浮動小数点数) が必要です。パンダでどうすればいいですか?

4

15 に答える 15

684

行が 1 つしかない DataFrame がある場合は、最初の (唯一の) 行に を使用して Series としてアクセスし、iloc次に列名を使用して値にアクセスします。

In [3]: sub_df
Out[3]:
          A         B
2 -0.133653 -0.030854

In [4]: sub_df.iloc[0]
Out[4]:
A   -0.133653
B   -0.030854
Name: 2, dtype: float64

In [5]: sub_df.iloc[0]['A']
Out[5]: -0.13365288513107493
于 2013-05-24T07:31:09.940 に答える
31

列名とインデックス名で選択された 1 つのセルの値が必要でした。この解決策は私のために働いた:

original_conversion_frequency.loc[1,:].values[0]

于 2018-10-27T18:21:00.240 に答える
17

私が見つけた最も速い/最も簡単なオプションは次のとおりです。501 は行インデックスを表します。

df.at[501,'column_name']
df.get_value(501,'column_name')
于 2017-09-23T16:41:56.183 に答える
7

これが良い習慣かどうかはわかりませんが、シリーズを としてキャストすることで値を取得できることにも気付きましたfloat

例えば

rate

3 0.042679

名前: Unemployment_rate、dtype: float64

float(rate)

0.0426789

于 2016-11-25T01:48:20.523 に答える
6

ilocpandas 0.10 の場合、は値を取得できません。a をフィルター処理DFして、列の最初の行のデータを取得しますVALUE

df_filt = df[df['C1'] == C1val & df['C2'] == C2val]
result = df_filt.get_value(df_filt.index[0],'VALUE')

フィルタリングされた行が複数ある場合は、最初の行の値を取得します。フィルターの結果が空のデータ フレームになる場合は、例外が発生します。

于 2015-10-15T08:21:00.977 に答える