Pandas Dataframe合并列

时间:2013-09-22 15:36:16

标签: pandas

我有一个像下面这样的pandas数据框

Year  Month  Day Securtiy Trade  Value  NewDate
2011      1   10     AAPL   Buy   1500        0

我的问题是,如何将列YearMonthDay合并到列NewDate中 以便newDate列看起来像以下

2011-1-10

3 个答案:

答案 0 :(得分:1)

最好的方法是在以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中,您可以使用apply:

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

答案 1 :(得分:1)

df ['年'] +' - ' + df ['月'] +' - ' + df ['日期']

答案 2 :(得分:0)

您可以按如下方式创建新的时间戳:

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