如何使用新格式覆盖CSV列中的所有行?

问题描述:

我有一个包含多行的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文件没有保存更改。

谢谢。

您可以使用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