Sumber csv:

column a, column b, 2021-01-09, column d
column a, column b, 2021-01-10, column d
column a, column b, 2021-01-11, column d

Keluaran yang diinginkan:

09/01/2021, column a, column b, column d
10/01/2021, column a, column b, column d
11/01/2021, column a, column b, column d

Apa metode terbaik untuk mencapai ini, dengan python?
Terima kasih sebelumnya!

2
shongyang low 9 Januari 2021, 16:22

3 jawaban

Jawaban Terbaik

Dengan asumsi baris Anda dari csv seperti

row = ["column a", "column b", "2021-01-09", "column d"]

Anda dapat melakukan sesuatu seperti

import datetime

row.sort()
row[0] = datetime.datetime.strptime(row[0], '%Y-%m-%d').strftime('%d/%m/%y')

Memberikan baris sebagai

>>> row
['09/01/21', 'column a', 'column b', 'column d']
1
Jarvis 9 Januari 2021, 13:33

Salah satu cara dengan pandas untuk mencapainya karena Anda sudah memiliki jawaban menggunakan csv.DictWriter< /kuat>

import pandas as pd
df = pd.read_csv('source.csv',names=["ColA", "ColB", "Date", "ColD"])
df['Date'] = pd.to_datetime(df['Date'].str.strip(), format='%Y-%m-%d').dt.strftime('%d/%m/%Y')
new_df = df[['Date', 'ColA', 'ColB', 'ColD']]
print(new_df)

Keluaran:

         Date      ColA       ColB       ColD
0  09/01/2021  column a   column b   column d
1  10/01/2021  column a   column b   column d
2  11/01/2021  column a   column b   column d
1
Always Sunny 9 Januari 2021, 13:36