首页 > 解决方案 > 如何从数据框中创建多个附加列并添加到同一个数据框中

问题描述

尝试将“日期”列解析为“月”、“日”、“小时”和“分钟”,然后将它们作为单独的列添加到同一数据框中:

import pandas as pd
d = {'date':[pd.Timestamp('2019-03-01 00:05:01'),
             pd.Timestamp('2019-04-02 07:11:00'),
             pd.Timestamp('2019-05-03 10:25:00')], 
     'foo': ['abc','def','jhk']
}
df1 = pd.DataFrame(d)

    date                foo
0   2019-03-01 00:05:01 abc
1   2019-04-02 07:11:00 def
2   2019-05-03 10:25:00 jhk

提取“次”后:

times = df1['date'].apply(lambda date: (date.month, date.day, date.hour, date.minute))

我尝试将它们作为单独的列添加到数据框中:

df1['month'], df1['day'], df1['hour'], df1['minute'] = times

导致错误:

 ValueError                                Traceback (most recent call last)
 <ipython-input-21-171174d71b13> in <module>
  ----> 1 df1['month'], df1['day'], df1['hour'], df1['minute'] = times

 ValueError: not enough values to unpack (expected 4, got 3)

如何将“时间”添加为单独的列?

标签: pythonpandas

解决方案


看起来你想要

df1['month'], df1['day'], df1['hour'], df1['minute'] =  (df1.date.dt.month, df1.date.dt.day, 
                                                        df1.date.dt.hour, df1.date.dt.minute)

print(df1)

date  foo  month  day  hour  minute
0 2019-03-01 00:05:01  abc      3    1     0       5
1 2019-04-02 07:11:00  def      4    2     7      11
2 2019-05-03 10:25:00  jhk      5    3    10      25
​

推荐阅读