2016-05-20 12 views
1

私はPythonとデータフレームが初めてです。このような何かを行うには良い方法がありますかと思いまして:データフレームをインデックスする良い方法はありますか?

df['Datetime'] = df.index 
df.reset_index(inplace=True, drop=True) 
df['id'] = df.index 
df.index = df['Datetime'] 
df.drop('Datetime', axis=1, inplace=True) 

私は数式(sin(2*pi*id)sin(2*pi*datetime)より良い作品)でそれを使用することができますので、私はID /インデックス列を必要としています。

列を移動しなくても簡単に生成する方法はありますか?

更新:

print(df.index) 
print(df['id']) 

出力:

DatetimeIndex(['2013-01-03', '2013-01-04', '2013-01-07', '2013-01-08', 
       '2013-01-09', '2013-01-10', '2013-01-11', '2013-01-14', 
       '2013-01-15', '2013-01-16', 
       ... 
       '2014-01-20', '2014-01-21', '2014-01-22', '2014-01-23', 
       '2014-01-24', '2014-01-27', '2014-01-28', '2014-01-29', 
       '2014-01-30', '2014-01-31'], 
       dtype='datetime64[ns]', length=282, freq=None, tz='UTC') 
2013-01-03 00:00:00+00:00  0 
2013-01-04 00:00:00+00:00  1 
2013-01-07 00:00:00+00:00  2 
2013-01-08 00:00:00+00:00  3 
2013-01-09 00:00:00+00:00  4 
2013-01-10 00:00:00+00:00  5 
2013-01-11 00:00:00+00:00  6 
2013-01-14 00:00:00+00:00  7 
+1

を使用することができますが、インデックスset'、 'ドロップ/する必要はありません、あなたが渡すことができますとにかく 'np.sin(2 * pi * df.index)'がうまく動作するはずです。また、何をしようとしているのではなく 'set_Index'と' reset_index(drop = True) 'を使用してください。 – EdChum

+0

あなたが意味するもののためのいくつかのサンプル入力/出力データは、 "それを数学で使用するatical formula "と、現在どのようにプロセスを実行していますか?これを行うためにインデックスを操作する必要があるようには聞こえませんが、具体的な例がないと不明です。 – root

+0

@EdChumは 'set_Index'について教えてくれてありがとうございます。次回はそのことを覚えておきます。 –

答えて

1

あなたが再構築たいデータフレームにpd.DataFrameを使用することができます。

import numpy as np 
import pandas as pd 

df = pd.DataFrame(index=pd.date_range('2009-1-1', periods=4)) 
df['Datetime'] = df.index 
df.reset_index(inplace=True, drop=True) 
df['id'] = df.index 
df.index = df['Datetime'] 
df.drop('Datetime', axis=1, inplace=True) 

df = pd.DataFrame(index=pd.date_range('2009-1-1', periods=4)) 
df = pd.DataFrame({'id': np.arange(len(df))}, index=df.index) 
#    id 
# 2009-01-01 0 
# 2009-01-02 1 
# 2009-01-03 2 
# 2009-01-04 3 

と同等であるか、A L points outとして、あなたは、単に

df['id'] = np.arange(len(df)) 
+1

これは私が 'df ['id'] = np.arange(len(df))' –

+0

を実行してしまったことです。ああ、それはもっと簡単です。 – unutbu

関連する問題