Skip to content

Commit f342914

Browse files
Fix timestamp conversion factor (#960) (#961)
Co-authored-by: Martin Durant <martin.durant@alumni.utoronto.ca>
1 parent 68da54f commit f342914

2 files changed

Lines changed: 24 additions & 4 deletions

File tree

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import pandas as pd
2+
3+
import fastparquet as fp
4+
5+
def test_github_960(request, tmp_path):
6+
"""
7+
https://github.com/dask/fastparquet/issues/960
8+
"""
9+
file_path = tmp_path / f'{request.node.name}.parquet'
10+
# Write datetime64[us] to TIMESTAMP_MICROS
11+
df0 = pd.DataFrame({'Date': ['2025-01-01', pd.NaT]}, index=[0, 1], dtype='datetime64[us]')
12+
fp.write(file_path, df0, append=False)
13+
14+
# Append datetime64[ns] to TIMESTAMP_MICROS
15+
df1 = pd.DataFrame({'Date': ['2025-07-31', pd.NaT]}, index=[2, 3], dtype='datetime64[ns]')
16+
fp.write(file_path, df1, append=True)
17+
18+
# Read back
19+
pf = fp.ParquetFile(file_path)
20+
df_actual = pf.to_pandas()
21+
22+
df_expected = pd.concat([df0, df1.astype('datetime64[us]')])
23+
assert df_expected.equals(df_actual)

fastparquet/writer.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -321,10 +321,7 @@ def convert(data, se):
321321
else:
322322
unit = [k for k, v in se.logicalType.TIMESTAMP.unit._asdict().items() if v is not None][0]
323323
factor = time_factors[(unit, part)]
324-
try:
325-
out = data.values.view("int64") * factor
326-
except KeyError:
327-
breakpoint()
324+
out = data.values.view("int64") // factor
328325
else:
329326
raise ValueError("Don't know how to convert data type: %s" % dtype)
330327
return out

0 commit comments

Comments
 (0)