我有一个如下的熊猫数据框
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']])
如果它已经在您的 DataFrame 中,您可以使用应用:
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['年份'] + '-' + df['月份'] + '-' + df['日期']
您可以按如下方式创建新的时间戳:
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