如何将一系列值转换为仅浮点数?

时间:2017-07-21 07:20:36

标签: python pandas dataframe series

我有一个只有一个值的系列,我只想获得该值。我运行了一个代码,通过索引匹配得到了值,我得到了一个这样的系列:

(normal_sum['KWH'][(normal_sum['KWH'].index == date)])

Timestamp
2017-04-02    2934.93
Freq: D, Name: KWH, dtype: float64

但是当我试图将它转换为浮动时:

float(normal_sum['KWH'][(normal_sum['KWH'].index == date)])

这是一个错误:

TypeError: cannot convert the series to <type 'float'>

预期产量:     2934.93

任何帮助都将不胜感激。

有一个编辑:

我正面临另一个问题:

假设我得到一个空系列,那么我怎样才能将它转换为零。

我这样做了:

(normal_sum['KWH'][(normal_sum['KWH'].index == date)])

得到这样的系列:

Series([], Freq: D, Name: KWH, dtype: float64)

请帮忙。

4 个答案:

答案 0 :(得分:3)

使用loc

normal_sum.loc[date, 'KWH']

请参阅@ MaxU对at

的回答

另外get_value

normal_sum.get_value(date, 'KWH')

要在日期不在索引中时返回零,您可以

normal_sum.KWH.get(date, 0)

答案 1 :(得分:2)

我们可以使用Series.at[...]方法进行标量查找:

In [138]: normal_sum = pd.Series([1.234], index=['KWH'])

In [139]: normal_sum
Out[139]:
KWH    1.234
dtype: float64

In [140]: normal_sum.at['KWH']
Out[140]: 1.234

答案 2 :(得分:1)

如果数据系列中只有一个元素,则可以通过调用tolist()将其转换为列表,并通过引用[0]来获取新列表的第一个元素。

答案 3 :(得分:0)

正如它所说,你试图将一个系列转换为一个不可能的浮动。系列可能有多个条目,并且每个条目都不必是浮点数或整数,它可以是任何东西。所以你必须选择你的特定条目,或者(坏方法):

normal_sum['KWH'].loc[0]

normal_sum['KWH'].iloc[date]

编辑:应该避免像以前那样完成链索引,以下方法更好。

如果您直接选择数据框(而不是系列normal_sum [&#39; KWH&#39;]),您可以这样做:

normal_sum.iloc[0,0]

normal_sum.loc[date, 'KWH']