2017-09-23 37 views
1

我有一個包含多行的CSV,我想編輯列標題爲下的所有日期的項目:「transaction.created」如何使用新格式覆蓋CSV列中的所有行?

的日期目前格式如下:

「2017-09- 23 12:10:11.603000 + 00:00'

看起來像這樣: '25/09/2017' 年

到目前爲止,我已經寫了一個Python腳本,它做到這一點:

import pandas as pd 
import csv 

def redate(x): 
    day = x[8:10] 
    month = x[5:7] 
    year = x[:4] 

    return '%s/%s/%s' %(day,month,year) 

df = pd.read_csv('monzo_transactions.csv') 
df = df[['transaction.amount', 'transaction.description', 'transaction.created']] 

for i in df['transaction.created']: 
    x = redate(i) 
    df.set_value(i,'transaction.created',x) 

df.to_csv('monzo_transactions_values_adjusted.csv') 

但新的CSV文件沒有保存更改。

謝謝。

回答

0

您可以使用to_datetimestrftime與格式從更好地解釋here

df = pd.read_csv('monzo_transactions.csv') 
df = df[['transaction.amount', 'transaction.description', 'transaction.created']] 

df['transaction.created'] = pd.to_datetime(df['transaction.created']).dt.strftime('%d/%m/%Y') 

df.to_csv('monzo_transactions_values_adjusted.csv') 

而且是轉換3.rd列可能使用參數parse_dates爲日期時間(從0蟒蛇計數,所以使用2 )和usecols用於過濾色譜柱read_csv

cols = ['transaction.amount', 'transaction.description', 'transaction.created'] 
df = pd.read_csv('monzo_transactions.csv', parse_dates=[2], usecols=cols) 

df['transaction.created'] = df['transaction.created'].dt.strftime('%d/%m/%Y') 

df.to_csv('monzo_transactions_values_adjusted.csv', index=False) 
+0

很高興能幫到你!愉快的週末! – jezrael