如何将一个值的序列转换为仅浮点值?

2024-05-15 12:06:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

(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)

请帮忙。


Tags: 代码namedateindex错误序列floattimestamp
3条回答

正如上面所说,您正在尝试将序列转换为不可能的浮点。一个序列可能有几个条目,每个条目不必是浮点数或整数,它可以是任何东西。因此,您必须选择您的特定条目,或者使用(错误的方式):

normal_sum['KWH'].loc[0]

或者

normal_sum['KWH'].iloc[date]

编辑:链式索引应该避免像以前那样做,下面的方法更好。

如果直接从数据框中选择(而不是从序列正常值和['KWH']中选择),则可以执行以下操作:

normal_sum.iloc[0,0]

或者

normal_sum.loc[date, 'KWH']

我们可以使用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

使用loc

normal_sum.loc[date, 'KWH']

关于at,请参见@MaxU的答案


还有get_value

normal_sum.get_value(date, 'KWH')

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

normal_sum.KWH.get(date, 0)

相关问题 更多 >