连接一个新列并重命名

时间:2018-11-24 13:19:12

标签: python-3.x pandas

我正在尝试根据另一个(时间列中的小时列)生成一个新列。问题在于,连接后,它将获得相同的名称(“时间”)。 而且,当我尝试更改其中一项时,另一项也更改了。

那是为什么?

这是代码

df['time'] = pd.to_datetime(df['time'])
hour_col = pd.Series(df['time']).copy()
hour_col = hour_col.apply(lambda t: t.hour)
df = pd.concat([df, hour_col], axis=1)

名称更改:

df = df.rename(columns={ df.columns[3]: "hour" })

1 个答案:

答案 0 :(得分:2)

使用dt.hour

df['time'] = pd.to_datetime(df['time'])
df['hours'] = df['time'].dt.hour

但是如果确实只需要您的解决方案rename column,则不必转换为Series,因为在选择{之后,DataFrame的每一列都是Series {1}}:

(print (type(df['time'])))

如果要按位置替换列(例如,因为重复的值和df = pd.DataFrame({'time':['10:20:30','20:03:04']}) df['time'] = pd.to_datetime(df['time']) hour_col = df['time'].rename('hour') hour_col = hour_col.apply(lambda t: t.hour) df = pd.concat([df, hour_col], axis=1) print (df) time hour 0 2018-11-24 10:20:30 10 1 2018-11-24 20:03:04 20 会更改两个名称,例如注释中提到的@Gla Avineri),请使用:

rename