在 python 中以优化方式迭代行
iteration of the rows in a optimize way in python
# 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')
这是我的解决方案。
现在的问题是-:有没有其他方法可以进行这种迭代操作?
因为我的数据框 Huge 和交互操作在这里需要时间。
谢谢。
Pandas 提供了一种将 Series
日期转换为字符串的专用方法:pd.Series.dt.strftime()
df['time'] = df['time'].dt.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
# 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')
这是我的解决方案。
现在的问题是-:有没有其他方法可以进行这种迭代操作?
因为我的数据框 Huge 和交互操作在这里需要时间。
谢谢。
Pandas 提供了一种将 Series
日期转换为字符串的专用方法:pd.Series.dt.strftime()
df['time'] = df['time'].dt.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