【问题标题】:Convert a Pandas dataframe with a date column to a Vaex dataframe将带有日期列的 Pandas 数据框转换为 Vaex 数据框
【发布时间】:2020-09-20 09:16:27
【问题描述】:

我正在尝试执行以下操作

  1. 用字符串列加载一些数据
measurement_df = pd.read_csv('data/tag_measurements/all_measurements.csv')
measurement_df.head(3)
measurement_df
>> prints
.  timestamp               tag_1      tag_2        tag_3    
0   2018-01-01 11:09:00 0.729193    -0.236627   -1.968651   
1   2018-01-02 05:56:00 -2.812988   0.394632    -1.151147   
2   2018-01-03 00:37:00 0.363185    -0.089076   -1.509133   

此时时间戳列的类型为 str:

type(measurement_df.iloc[0]['timestamp'])
>> prints
str
  1. 将其转换为 Vaex
vdf = vx.from_pandas(measurement_df)
vdf.head(3)
>> prints
#           tag_1          tag_2                  tag_3           index
0   0.7291933972260769  -0.2366268009370677  -1.9686509728501898    0
1   -2.8129876800434737 0.3946317890604529   -1.1511473058592252    1
2   0.3631852302577519  -0.08907562484360453 -1.5091330993605443    2 

不知何故,我丢失了时间戳列。有什么想法可能会出错吗?

【问题讨论】:

  • 'timestamp' 的 dtype 是什么? (你确定它是“datetime64”吗?)
  • 它是str(见对帖子的编辑)。我将其转换为np.datetime64measurement_df['timestamp'] = [np.datetime64(i) for i in measurement_df['timestamp'].values]。转换后它仍然不起作用,即时间戳列消失了。

标签: python pandas dataframe timestamp vaex


【解决方案1】:

如果您想保留日期/时间格式,尤其是在阅读 CSV 时,我建议您这样做:

df = pd.read_csv('myfile.csv', parse_dates=['datetime_col_1', 'datetime_col_2'])

你也可以这样做:

df = vaex.read_csv('myfile.csv', parse_dates=['datetime_col_1', 'datetime_col_2'])

它是一样的,因为它在后台使用了 pandas 方法。

【讨论】:

  • 看着Vaex APIs,我认为他们拥有的最接近的东西是from_csv。我尝试调用vx.from_csv('my_files.csv', parse_dates=['timestamp']),它导致以下错误并且timestamp 被丢弃:could not convert column timestamp, error: AssertionError("dtype not supported: dtype('<M8[ns]'), <class 'numpy.datetime64'>",), will try to convert it to string
  • 我刚查了一下,我使用的是旧版本的 vaex。更新到 3.0.0 (conda install -c conda-forge vaex=3.0.0 ) 并且您提出的解决方案有效!谢谢@Joco。
  • 仅供阅读此文的任何人使用。vaex 目前的版本为 v4.5.x。不知道为什么,但有时 pip/conda 不安装最新版本
猜你喜欢
  • 2019-07-21
  • 2016-03-31
  • 2012-02-02
  • 2017-03-12
  • 1970-01-01
  • 2018-03-25
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多