【问题标题】:Time series from dataframe loses values数据帧中的时间序列丢失值
【发布时间】:2015-04-24 16:05:42
【问题描述】:

我有 2 个数据框,df1df2 大小相同,df1 带有 datecolumn 和 df2 带有 float 列。当我执行以下操作时:

series = pandas.Series(df2['float'], df1['date'])

时间序列上的值都是NaN。我在做之前检查了两个数据框都有数据。我做错了什么?

【问题讨论】:

  • 你在这里尝试什么?你想要浮点数还是日期值作为索引,另一个作为数据?
  • 日期作为索引,因此是第二个参数。
  • 我不知道这是否是一个错误,但以下工作:series = pandas.Series(df2['float'].values, df1['date'])

标签: python pandas merge time-series


【解决方案1】:

这在我看来是个错误:

In [29]:

df = pd.DataFrame({'date':[dt.datetime.now()]})
print(df)
df1 = pd.DataFrame({'float':[2.1145]})
df1
                        date
0 2015-02-23 11:23:03.550538
Out[29]:
    float
0  2.1145
In [30]:

pd.Series(df1['float'], df['date'])
Out[30]:
date
2015-02-23 11:23:03.550538   NaN
Name: float, dtype: float64

调用属性.values

In [31]:

pd.Series(df1['float'].values, df['date'])
Out[31]:
date
2015-02-23 11:23:03.550538    2.1145
dtype: float64

这看起来像一个通用错误:

In [34]:

df3 = pd.DataFrame({'int':[323]})
df3
Out[34]:
   int
0  323

以下组合均失败:

In [39]:

pd.Series(df2['float'], df3['int'])
Out[39]:
int
323   NaN
Name: float, dtype: float64
In [40]:

pd.Series(df['date'], df2['float'])
Out[40]:
float
1.21554   NaT
Name: date, dtype: datetime64[ns]

In [41]:

pd.Series(df3['int'], df2['float'])
Out[41]:
float
1.21554   NaN
Name: int, dtype: float64

【讨论】:

猜你喜欢
  • 2016-11-21
  • 2013-10-21
  • 2011-12-19
  • 2018-02-22
  • 2016-04-21
  • 1970-01-01
  • 2019-08-11
  • 2021-11-20
  • 2020-12-04
相关资源
最近更新 更多