我构造了一个条件,从我的数据帧中提取一行:
d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]
现在我想从一个特定的列中取一个值:
val = d2['col_name']
但结果是,我得到的数据帧只包含一行和一列(即一个单元格)。这不是我需要的。我需要一个值(一个浮点数)。在熊猫身上怎么做呢?
我构造了一个条件,从我的数据帧中提取一行:
d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]
现在我想从一个特定的列中取一个值:
val = d2['col_name']
但结果是,我得到的数据帧只包含一行和一列(即一个单元格)。这不是我需要的。我需要一个值(一个浮点数)。在熊猫身上怎么做呢?
当前回答
df_gdp.columns
Index([u'Country', u'Country Code', u'Indicator Name', u'Indicator Code', u'1960', u'1961', u'1962', u'1963', u'1964', u'1965', u'1966', u'1967', u'1968', u'1969', u'1970', u'1971', u'1972', u'1973', u'1974', u'1975', u'1976', u'1977', u'1978', u'1979', u'1980', u'1981', u'1982', u'1983', u'1984', u'1985', u'1986', u'1987', u'1988', u'1989', u'1990', u'1991', u'1992', u'1993', u'1994', u'1995', u'1996', u'1997', u'1998', u'1999', u'2000', u'2001', u'2002', u'2003', u'2004', u'2005', u'2006', u'2007', u'2008', u'2009', u'2010', u'2011', u'2012', u'2013', u'2014', u'2015', u'2016'], dtype='object')
df_gdp[df_gdp["Country Code"] == "USA"]["1996"].values[0]
8100000000000.0
其他回答
在以后的版本中,你可以简单地这样做来修复它:
val = float(d2['col_name'].iloc[0])
如果你有一个只有一行的DataFrame,那么使用iloc访问第一行作为Series,然后使用列名访问值:
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
我不确定这是否是一个好的实践,但我注意到我也可以通过将该系列转换为float来获得值。
例如,
rate
3 0.042679
名称:Unemployment_rate, dtype: float64
float(rate)
0.0426789
要获得完整行的值为JSON(而不是一个Serie):
row = df.iloc[0]
像下面这样使用to_json方法:
row.to_json()
这并不需要太复杂:
val = df.loc[df.wd==1, 'col_name'].values[0]