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

时间:2017-09-23 20:34:01

标签: python pandas csv

我有一个包含多行的csv,我想编辑标题为''transaction.created'

的列下的所有日期项目

日期目前的格式如下:

'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文件没有保存更改。

感谢。

1 个答案:

答案 0 :(得分: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')

也可以使用参数parse_dates将3.rd列转换为datetime(python从0计算,因此使用2)和usecols来过滤{ {3}}:

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)
相关问题