python - 如何从数据框中创建多个附加列并添加到同一个数据框中
问题描述
尝试将“日期”列解析为“月”、“日”、“小时”和“分钟”,然后将它们作为单独的列添加到同一数据框中:
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)
如何将“时间”添加为单独的列?
解决方案
看起来你想要
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