# Import pandas library
import pandas as pd
# initialize list of lists
data = [['2016-01-02 11:23:04.299000+00:00', 10], ['2016-01-02 11:23:04.299000+00:00', 15], ['2016-01-02 11:23:04.299000+00:00', 14],['2016-01-02 11:23:04.299000+00:00', 10],['2016-01-02 11:23:04.299000+00:00', 10]
,['2016-01-02 11:23:04.299000+00:00', 10],['2016-01-02 11:23:04.299000+00:00', 10]]
df = pd.DataFrame(data, columns = ['time', 'sd'])
#df
time sd
0 2016-01-02 11:23:04.299000+00:00 10
1 2016-01-02 11:23:04.299000+00:00 15
2 2016-01-02 11:23:04.299000+00:00 14
3 2016-01-02 11:23:04.299000+00:00 10
4 2016-01-02 11:23:04.299000+00:00 10
5 2016-01-02 11:23:04.299000+00:00 10
6 2016-01-02 11:23:04.299000+00:00 10
我需要对时间列进行操作,操作如下:
for i in range(len(df['time'])):
df.loc[i, 'time'] = pd.Timestamp(df['time'][i]).strftime('%Y-%m-%d %X')
这是我的解决方案。
现在的问题是:有没有其他的方法来做这个迭代操作?
因为我的数据框太大,交互操作在这里占用了时间。
谢谢。
您可以直接这样做,而无需手动遍历所有行:
df['time'] = pd.to_datetime(df['time']).dt.strftime('%Y-%m-%d %X')
print(df)
time sd
0 2016-01-02 11:23:04 10
1 2016-01-02 11:23:04 15
2 2016-01-02 11:23:04 14
3 2016-01-02 11:23:04 10
4 2016-01-02 11:23:04 10
5 2016-01-02 11:23:04 10
6 2016-01-02 11:23:04 10
Pandas提供了一个将日期的Series
转换为字符串的专用方法:pd.Series.dt.strftime()
df['time'] = df['time'].dt.strftime('%Y-%m-%d %X')