如何使用新格式覆盖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_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')
而且是转换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)
很高兴能帮到你!愉快的周末! – jezrael