2

私は Mac OS X で Pandas 0.11 を使用しています。 pandas を使用して csv ファイルをインポートしようとしてread_csvいます。ファイル内の列の 1 つは完全なタイムスタンプで、次のような値があります。

fullts
1374087067.357464
1374087067.256206
1374087067.158231
1374087067.074162

後続のタイムスタンプ間の時間差を取得することに興味があるため、次を指定してインポートしますdtype

    data = read_csv(fn, dtype={'fullts': float64})

ただし、パンダは数値を整数部分に切り捨てているようです。

    data.fullts.head(4)

収量:

1374087067
1374087067
1374087067
1374087067

助言がありますか?

ありがとう!

追加:pd.to_datetime提案どおりに使用してみましたが、次のエラーが発生します:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-37ed0da45608> in <module>()
---> 1 pd.to_datetime(sd1.fullts)

/Users/user/anaconda/lib/python2.7/site-packages/pandas-0.11.0-py2.7-macosx-10.5-x86_64.egg/pandas/tseries/tools.pyc in to_datetime(arg, errors, dayfirst, utc, box, format)
    102         values = arg.values
    103         if not com.is_datetime64_dtype(values):
--> 104             values = _convert_f(values)
    105         return Series(values, index=arg.index, name=arg.name)
    106     elif isinstance(arg, (np.ndarray, list)):

/Users/user/anaconda/lib/python2.7/site-packages/pandas-0.11.0-py2.7-macosx-10.5-x86_64.egg/pandas/tseries/tools.pyc in _convert_f(arg)
     84             else:
     85                 result = tslib.array_to_datetime(arg, raise_=errors == 'raise',
---> 86                                                  utc=utc, dayfirst=dayfirst)
     87             if com.is_datetime64_dtype(result) and box:
     88                 result = DatetimeIndex(result, tz='utc' if utc else None)
/Users/user/anaconda/lib/python2.7/site-packages/pandas-0.11.0-py2.7-macosx-10.5-x86_64.egg/pandas/tslib.so in pandas.tslib.array_to_datetime (pandas/tslib.c:15411)()

TypeError: object of type 'float' has no len()
4

1 に答える 1

2

csv から読み取るときに dtype を指定する必要はありません (デフォルトでは float64 を使用する必要があります)。

pandas 0.12 では、次の unit 引数を使用して、(エポック時間の) 整数または浮動小数点数の列を pandas タイムスタンプに変換できますto_datetime

In [11]: df
Out[11]:
         fullts
0  1.374087e+09
1  1.374087e+09
2  1.374087e+09
3  1.374087e+09

In [12]: pd.to_datetime(df.fullts)  # default unit is ns
Out[12]:
0   1970-01-01 00:00:01.374087067
1   1970-01-01 00:00:01.374087067
2   1970-01-01 00:00:01.374087067
3   1970-01-01 00:00:01.374087067
Name: fullts, dtype: datetime64[ns]

In [13]: pd.to_datetime(df.fullts, unit='s')
Out[13]:
0   2013-07-17 18:51:07.357464
1   2013-07-17 18:51:07.256206
2   2013-07-17 18:51:07.158231
3   2013-07-17 18:51:07.074162
Name: fullts, dtype: datetime64[ns]

docstring の状態:

unit: 引数の単位               は、整数/浮動小数点数である(D,s,ms,us,ns)エポック (例: UNIX タイムスタンプ) の単位を示します

于 2013-07-20T18:28:34.130 に答える