Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG-REPORT] Can't Convert a datetime column to a string column #1568

Closed
bsbalkar opened this issue Sep 11, 2021 · 2 comments
Closed

[BUG-REPORT] Can't Convert a datetime column to a string column #1568

bsbalkar opened this issue Sep 11, 2021 · 2 comments

Comments

@bsbalkar
Copy link

bsbalkar commented Sep 11, 2021

Description
I'm trying to convert a column containing data in datetime64 format to string.

Let's say I have a column named df['date'] containing dates in datetime64

I tried converting it to a string column using "to_string" but it ended up in the following error below:

df['date'].to_string()

TypeError: to_string(): incompatible function arguments. The following argument types are supported:
    1. (arg0: numpy.ndarray[float32]) -> vaex.superstrings.StringList64
    2. (arg0: numpy.ndarray[float64]) -> vaex.superstrings.StringList64
    3. (arg0: numpy.ndarray[int64]) -> vaex.superstrings.StringList64
    4. (arg0: numpy.ndarray[int32]) -> vaex.superstrings.StringList64
    5. (arg0: numpy.ndarray[int16]) -> vaex.superstrings.StringList64
    6. (arg0: numpy.ndarray[int8]) -> vaex.superstrings.StringList64
    7. (arg0: numpy.ndarray[uint64]) -> vaex.superstrings.StringList64
    8. (arg0: numpy.ndarray[uint32]) -> vaex.superstrings.StringList64
    9. (arg0: numpy.ndarray[uint16]) -> vaex.superstrings.StringList64
    10. (arg0: numpy.ndarray[uint8]) -> vaex.superstrings.StringList64
    11. (arg0: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    12. (arg0: numpy.ndarray[float32], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    13. (arg0: numpy.ndarray[float64], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    14. (arg0: numpy.ndarray[int64], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    15. (arg0: numpy.ndarray[int32], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    16. (arg0: numpy.ndarray[int16], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    17. (arg0: numpy.ndarray[int8], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    18. (arg0: numpy.ndarray[uint64], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    19. (arg0: numpy.ndarray[uint32], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    20. (arg0: numpy.ndarray[uint16], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    21. (arg0: numpy.ndarray[uint8], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64
    22. (arg0: numpy.ndarray[bool], arg1: numpy.ndarray[bool]) -> vaex.superstrings.StringList64

Invoked with: array([datetime.date(2020, 11, 4)], dtype=object)

Please help regarding this.

Software information

  • Vaex version (import vaex; vaex.__version__):

  • {'vaex': '4.4.0', 'vaex-core': '4.4.0', 'vaex-viz': '0.5.0', 'vaex-hdf5': '0.9.0', 'vaex-server': '0.6.0', 'vaex-astro': '0.8.3', 'vaex-jupyter': '0.6.0', 'vaex-ml':
    '0.13.0'}

  • Vaex was installed via: pip in Pycharm and conda in jupyter notebook

  • OS:
    Windows 10

Additional information
Please state any supplementary information or provide additional context for the problem (e.g. screenshots, data, etc..).

@JovanVeljanoski
Copy link
Member

Hi,

there is a dedicated method for this in dt accessor. See this example:

import vaex
import numpy as np

date = np.array([np.datetime64('2009-10-12T03:31:00'),
                 np.datetime64('2016-02-11T10:17:34'),
                 np.datetime64('2015-11-12T11:34:22'),
                 np.datetime64('2003-03-03T00:33:15'),
                 np.datetime64('2014-07-23T15:08:05'),
                 np.datetime64('2011-01-01T07:02:01')], dtype='<M8[ns]')

df = vaex.from_arrays(date=date)

# Create formatted string
df.date.dt.strftime('%Y-%m-%d %H:%m:%s')

This way you can format your datetime columns into string depending on what you need.

I hope this helps

@bsbalkar
Copy link
Author

Thanks @JovanVeljanoski

This worked for me.

But in earlier version of vaex one can convert datetime to text with df['date'].astype('str') or df['date'].to_string(). And it's more simple in this way. I hope you'll try to include it in newer versions of vaex.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants