我有一個熊貓數據幀像下面熊貓據幀合併列
Year Month Day Securtiy Trade Value NewDate
2011 1 10 AAPL Buy 1500 0
我的問題是,我怎麼能合併列Year
,Month
,Day
成列NewDate
使得newDate
列如下所示
2011-1-10
我有一個熊貓數據幀像下面熊貓據幀合併列
Year Month Day Securtiy Trade Value NewDate
2011 1 10 AAPL Buy 1500 0
我的問題是,我怎麼能合併列Year
,Month
,Day
成列NewDate
使得newDate
列如下所示
2011-1-10
最好的辦法是將它解析爲CSV閱讀時:
In [1]: df = pd.read_csv('foo.csv', sep='\s+', parse_dates=[['Year', 'Month', 'Day']])
In [2]: df
Out[2]:
Year_Month_Day Securtiy Trade Value NewDate
0 2011-01-10 00:00:00 AAPL Buy 1500 0
在閱讀你可以做到這一點沒有頭,通過定義列名:
pd.read_csv(input_file, header=['Year', 'Month', 'Day', 'Security','Trade', 'Value' ], parse_dates=[['Year', 'Month', 'Day']])
如果它已經在你的數據框,你可以使用一個應用:
In [11]: df['Date'] = df.apply(lambda s: pd.Timestamp('%s-%s-%s' % (s['Year'], s['Month'], s['Day'])), 1)
In [12]: df
Out[12]:
Year Month Day Securtiy Trade Value NewDate Date
0 2011 1 10 AAPL Buy 1500 0 2011-01-10 00:00:00
DF ['Year'] +' - '+ df ['Month'] +' - '+ df ['Date']
您可以創建一個新的時間戳,如下所示:
df['newDate'] = df.apply(lambda x: pd.Timestamp('{0}-{1}-{2}'
.format(x.Year, x.Month, x.Day),
axix=1)
>>> df
Year Month Day Securtiy Trade Value NewDate newDate
0 2011 1 10 AAPL Buy 1500 0 2011-01-10
不幸的是,我輸入的csv文件沒有標題。我必須添加headers.df.columns = ['Year','Month','Day','Security','Trade','Value']。所以,我必須重新格式化數據框以實現YYYY-MM-DD到Newdate列 – trinity
@trinity中的串聯,您還可以從位置so [[0,1,2]]執行此操作,或者在使用頭文件的參數爲read_csv –
您的意思是,df = pd.read_csv(input_file,header = None,parse_dates = [[0,1,2]])?? – trinity