Если преобразовать столбец строки к временному ряду, вы могли бы использовать dt.strftime
method:
import numpy as np
import pandas as pd
nan = np.nan
df = pd.DataFrame({'TBD': [nan, nan, nan], 'TBD.1': [nan, nan, nan], 'TBD.2': [nan, nan, nan], 'TimeStamp': ['2016/06/08 17:19:53', '2016/06/08 17:19:54', '2016/06/08 17:19:54'], 'Value': [0.062941999999999998, 0.062941999999999998, 0.062941999999999998]})
df['TimeStamp'] = pd.to_datetime(df['TimeStamp']).dt.strftime('%m/%d/%Y %H:%M:%S')
print(df)
дает
TBD TBD.1 TBD.2 TimeStamp Value
0 NaN NaN NaN 06/08/2016 17:19:53 0.062942
1 NaN NaN NaN 06/08/2016 17:19:54 0.062942
2 NaN NaN NaN 06/08/2016 17:19:54 0.062942
Так как вы хотите, чтобы преобразовать столбец строк в другой (другой) столбец строк, вы также можете использовать векторизованный метод str.replace
:
import numpy as np
import pandas as pd
nan = np.nan
df = pd.DataFrame({'TBD': [nan, nan, nan], 'TBD.1': [nan, nan, nan], 'TBD.2': [nan, nan, nan], 'TimeStamp': ['2016/06/08 17:19:53', '2016/06/08 17:19:54', '2016/06/08 17:19:54'], 'Value': [0.062941999999999998, 0.062941999999999998, 0.062941999999999998]})
df['TimeStamp'] = df['TimeStamp'].str.replace(r'(\d+)/(\d+)/(\d+)(.*)', r'\2/\3/\1\4')
print(df)
так
In [32]: df['TimeStamp'].str.replace(r'(\d+)/(\d+)/(\d+)(.*)', r'\2/\3/\1\4')
Out[32]:
0 06/08/2016 17:19:53
1 06/08/2016 17:19:54
2 06/08/2016 17:19:54
Name: TimeStamp, dtype: object
Это использует регулярное выражение для перегруппировки частей строки без предварительного разбора строку в качестве даты. Это быстрее, чем первый метод (главным образом потому, что он пропускает шаг синтаксического анализа), но также имеет недостаток, заключающийся в том, что нельзя проверить, что строки даты являются действительными.
Hello @unutbu это сработало. да, я заметил медленность при запуске этой строки и после ее завершения. Я преобразовал ее в datetime, используя pd.to_datetime, и это было очень медленно по сравнению с тем, когда df ['TimeStamp'] был строкой. будет ли эта процедура быстрее, чем применение функции str по циклу? специально для dataframe для миллиона записей, делая цикл, я думаю, это не очень хорошая идея. – racekiller
Справа. Избегайте цикла Python, если можете. Использование 'DatetimeIndex.strftime' * намного быстрее, чем использование цикла Python, разбора каждой строки даты в качестве даты и вызова' strftime'. – unutbu
@unutbu Вам не нужен 'DatetimeIndex',' strftime' также доступен из Access. – joris