使用 Python Pandas 更改 csv 的日期列
Changing date column of csv with Python Pandas
我有一个这样的 csv 文件:
Tarih、Şimdi、Açılış、Yüksek、Düşük、Hac.、Fark %
31.05.2022, 8,28, 8,25, 8,38, 8,23, 108,84M, 0,61%
(一千多行)
我想这样改:
Tarih、Şimdi、Açılış、Yüksek、Düşük、Hac.、Fark %
5/31/2022, 8.28, 8.25, 8.38, 8.23, 108.84M, 0.61%
特别是“日期”格式是Day.Month.Year,我需要把它变成Month/Day/Year格式。
我这样写代码:
import pandas as pd
import numpy as np
import datetime
data=pd.read_csv("qwe.csv", encoding= 'utf-8')
df.Tarih=df.Tarih.str.replace(".","/")
df.Şimdi=df.Şimdi.str.replace(",",".")
df.Açılış=df.Açılış.str.replace(",",".")
df.Yüksek=df.Yüksek.str.replace(",",".")
df.Düşük=df.Düşük.str.replace(",",".")
for i in df['Tarih']:
q = 1
datetime_obj = datetime.datetime.strptime(i, "%d/%m/%Y")
df['Tarih'].loc[df['Tarih'].values == q] = datetime_obj
但是我代码中的“for”循环不起作用。我需要这方面的帮助。谢谢
只要看看转换日期,您可以导入带有参数 pd.read_csv
的日期时间对象,然后通过对每个条目应用 strftime
来转换为您想要的格式。
如果我有以下tmp.csv
:
date, value
30.05.2022, 4.2
31.05.2022, 42
01.06.2022, 420
import pandas as pd
df = pd.read_csv('tmp.csv', parse_dates=['date'], dayfirst=True)
df['date'] = df['date'].dt.strftime('%m/%d/%Y')
print(df)
输出:
date value
0 05/30/2022 4.2
1 05/31/2022 42.0
2 06/01/2022 420.0
我有一个这样的 csv 文件:
Tarih、Şimdi、Açılış、Yüksek、Düşük、Hac.、Fark %
31.05.2022, 8,28, 8,25, 8,38, 8,23, 108,84M, 0,61%
(一千多行)
我想这样改:
Tarih、Şimdi、Açılış、Yüksek、Düşük、Hac.、Fark %
5/31/2022, 8.28, 8.25, 8.38, 8.23, 108.84M, 0.61%
特别是“日期”格式是Day.Month.Year,我需要把它变成Month/Day/Year格式。
我这样写代码:
import pandas as pd
import numpy as np
import datetime
data=pd.read_csv("qwe.csv", encoding= 'utf-8')
df.Tarih=df.Tarih.str.replace(".","/")
df.Şimdi=df.Şimdi.str.replace(",",".")
df.Açılış=df.Açılış.str.replace(",",".")
df.Yüksek=df.Yüksek.str.replace(",",".")
df.Düşük=df.Düşük.str.replace(",",".")
for i in df['Tarih']:
q = 1
datetime_obj = datetime.datetime.strptime(i, "%d/%m/%Y")
df['Tarih'].loc[df['Tarih'].values == q] = datetime_obj
但是我代码中的“for”循环不起作用。我需要这方面的帮助。谢谢
只要看看转换日期,您可以导入带有参数 pd.read_csv
的日期时间对象,然后通过对每个条目应用 strftime
来转换为您想要的格式。
如果我有以下tmp.csv
:
date, value
30.05.2022, 4.2
31.05.2022, 42
01.06.2022, 420
import pandas as pd
df = pd.read_csv('tmp.csv', parse_dates=['date'], dayfirst=True)
df['date'] = df['date'].dt.strftime('%m/%d/%Y')
print(df)
输出:
date value
0 05/30/2022 4.2
1 05/31/2022 42.0
2 06/01/2022 420.0