1

我有一个如下的熊猫数据框

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

我的问题是,如何将列YearMonth、合并到Day列中NewDate ,使newDate列如下所示

2011-1-10
4

3 回答 3

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 中,您可以使用应用:

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
于 2013-09-22T15:40:47.527 回答
1

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

于 2015-02-04T21:53:39.223 回答
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
于 2015-05-22T20:27:29.727 回答