0

DataFrame私は18列と約10000行のパンダを持っています。

私の最初の3列には、、、およびの個別の値がYEARありMONTHますDAY。これらの3つの列をマージし、すべての行の1つの列に日付全体を含める必要があります。

これまでの私のコードは次のとおりです。

df.merge('Year','/','Month')
4

1 に答える 1

5

あなたが探しているのはデータベース結合のようなものです):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として読み取るときに簡単な方法があることに注意してください。

于 2012-12-07T10:48:58.003 に答える