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

j7dteeu8  于 2023-08-01  发布在  其他
关注(0)|答案(5)|浏览(184)

我有一个只有一个值的序列,我只想得到那个值。我运行了一个代码,通过索引匹配得到值,我得到了一个如下的序列:

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

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

字符串
但是当我试图通过这个把它转换成float的时候:

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)


请帮帮忙。

t3psigkw

t3psigkw1#

使用loc

normal_sum.loc[date, 'KWH']

字符串
请参阅@MaxU对at的回答
get_value

normal_sum.get_value(date, 'KWH')


若要在索引中没有日期时返回零,可以

normal_sum.KWH.get(date, 0)

vs91vp4v

vs91vp4v2#

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

5lhxktic

5lhxktic3#

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

字符串

uurity8g

uurity8g4#

正如它所说的,你试图将一个系列转换为一个浮动,这是不可能的。一个Series可能有几个条目,每个条目不必是浮点数或整数,它可以是任何东西。所以你必须选择你的特定条目,要么用(坏的方式):

normal_sum['KWH'].loc[0]

字符串
或者是

normal_sum['KWH'].iloc[date]


编辑:应该避免像以前那样做的链式索引,下面的方法更好。
如果您直接从数据框中选择(而不是从Series normal_sum ['KWH']),您可以这样做:

normal_sum.iloc[0,0]


或者是

normal_sum.loc[date, 'KWH']

h22fl7wq

h22fl7wq5#

现在(从什么时候开始?))的专用功能:

normal_sum.item()

字符串
该方法的一个优点是,如果不完全是一个项,它将引发异常。

相关问题