我有一个熊猫数据帧像下面熊猫据帧合并列
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