DataFrame
私は18列と約10000行のパンダを持っています。
私の最初の3列には、、、およびの個別の値がYEAR
ありMONTH
ますDAY
。これらの3つの列をマージし、すべての行の1つの列に日付全体を含める必要があります。
これまでの私のコードは次のとおりです。
df.merge('Year','/','Month')
DataFrame
私は18列と約10000行のパンダを持っています。
私の最初の3列には、、、およびの個別の値がYEAR
ありMONTH
ますDAY
。これらの3つの列をマージし、すべての行の1つの列に日付全体を含める必要があります。
これまでの私のコードは次のとおりです。
df.merge('Year','/','Month')
あなたが探しているのは(データベース結合のようなものです):apply
merge
In [1]: from pandas import DataFrame
In [2]: df = DataFrame([[1,11,2012],[1,10,2012]], columns=['day','month','year'])
In [3]: df
Out[3]:
day month year
0 1 11 2012
1 1 10 2012
In [4]: df.apply(lambda row: str(row['day'])+'/'+str(row['month'])+'/'+str(row['year']), axis=1)
Out[4]:
0 1/11/2012
1 1/10/2012
このaxis=1
部分は、行ではなく列を選択していることを意味します。
特定の日付を指定したい場合は、datetimeを使用できます。
In [5]: import datetime
In [6]: df.apply(lambda row: datetime.datetime(row['year'],row['month'],row['day']), axis=1)
Out[6]:
0 2012-11-01 00:00:00
1 2012-10-01 00:00:00
次のように、これらをデータフレームの列として追加できます。
In [7]: df['new_date'] = df.apply(lambda row: str(row['day'])+'/'+str(row['month'])+'/'+str(row['year']), axis=1)
In [8]: df
Out[8]:
day month year new_date
0 1 11 2012 1/11/2012
1 1 10 2012 1/10/2012
。
パンダにはparse_dates
、csvとして読み取るときに簡単な方法があることに注意してください。