Ich möchte dtype einer Datenrahmenspalte ändern (von datetime64 zu Objekt).Wie ändert man dType einer Spalte in DataFrame?
Zunächst einmal erstellen I-Datenrahmen:
Python 2.6.8 (unknown, Jan 26 2013, 14:35:25)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> values = pd.Series(i for i in range(5))
>>> dates = pd.date_range('20130101',periods=5)
>>> df = pd.DataFrame({'values': values, 'dates': dates})
>>> df
/usr/local/lib/python2.6/dist-packages/pandas/core/config.py:570: DeprecationWarning: height has been deprecated.
warnings.warn(d.msg, DeprecationWarning)
dates values
0 2013-01-01 00:00:00 0
1 2013-01-02 00:00:00 1
2 2013-01-03 00:00:00 2
3 2013-01-04 00:00:00 3
4 2013-01-05 00:00:00 4
Es zwei Spalten: Die eine ist datetime64 und andere ist int64 dtype:
>>> df.dtypes
dates datetime64[ns]
values int64
dtype: object
In Pandas Dokumentation fand ich, wie zu konvertieren Reihe zu irgendwelchen dtypes. Es sieht aus wie das, was ich brauche:
>>> df['dates'].astype(object)
0 2013-01-01 00:00:00
1 2013-01-02 00:00:00
2 2013-01-03 00:00:00
3 2013-01-04 00:00:00
4 2013-01-05 00:00:00
Name: dates, dtype: object
Aber wenn ich diese Serie als Datenrahmen Spalte zuweisen, bekam ich wieder einen datetime64 dtype.
>>> df['dates'] = df['dates'].astype(object)
>>> df.dtypes
dates datetime64[ns]
values int64
dtype: object
Bitte helfen Sie. Wie konvertiert man die Spalte des Datenrahmens in den Objekttyp? Danke.
warum versuchen Sie dies zu tun? Objektrepräsentation im Fall einer Datetime ist sehr ineffizient, also konvertiert Pandas intern. – Jeff
Ich möchte datetime in Objekt konvertieren, weil Pandas einen Fehler haben (siehe http://stackoverflow.com/questions/19300730) in Pivot-Summen-Berechnung, wenn die Spalte (die als Header verwendet wird) Datetime ist. – ghostishev
die Lösung in diesem Problem sieht gut aus, nur die Zeilen/Spalten zu transponieren. Was Sie versuchen zu tun, hat nichts mit '' datetime64 [ns] '' als D-Typ zu tun und wird nicht helfen. – Jeff