我有一个包含多行的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文件没有保存更改。
感谢。
答案 0 :(得分:0)
您可以将to_datetime
与strftime
一起使用格式更好的解释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)