我正在尝试根据另一个(时间列中的小时列)生成一个新列。问题在于,连接后,它将获得相同的名称(“时间”)。 而且,当我尝试更改其中一项时,另一项也更改了。
那是为什么?
这是代码
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" })
答案 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