将日期重新格式化为YYYY / MM / DD并以CSV格式替换列数据

时间:2016-06-21 07:34:09

标签: python python-2.7

我是一名新手python程序员,我有一个简单的CSV,看起来像这样:

FROM_ID,JOIN_DATE,FAV_SPORT
100004,06/08/2016,Football
100006,06/08/2016,Tennis
100007,06/08/2016,Football
100009,06/08/2016,Basketball

我正在尝试将日期重写为YYYY / MM / DD。到目前为止,我已经走到了这一步:

import csv
f = open('reg.csv')
csv_f = csv.reader(f)

for row in csv_f:
    parts = row[1].split('/')
print parts[2]

所有这一切都打印出年份(YYYY),这是更近一步:)任何人都可以建议如何将零件重新格式化为YYYY / MM / DD格式?

另外,我注意到python没有case / select。如何在“FROM_ID”上创建查找/替换并将其替换为其他数字?像:

如果FROM_ID等于X,则Y

提前感谢您的帮助。我已经在互联网上搜了好几个小时了,但是我感觉很困难,但希望我能继续前进。谢谢!

5 个答案:

答案 0 :(得分:1)

你非常接近。您所需要的只是:

print parts[2] + "/" + parts[0] + "/" + parts[1]

答案 1 :(得分:1)

import csv
f = open('reg.csv')
csv_f = csv.reader(f)

for row in csv_f:
    if "JOIN_DATE" in row: continue
    parts = row[1].split('/')
    data = "{}/{}/{}".format(parts[2],parts[1],parts[0])
print data

答案 2 :(得分:1)

至于你的第二点,你应该看一下pandas,这是一个用于数据分析的Python库,尤其是表格数据集。

您可以使用

读取数据
df = pd.read_csv("path_to_your_file")

将返回DataFrame,您可以在其上执行操作,例如选择子集,您的示例将变为

df[df.FROM_ID == X] 

答案 3 :(得分:0)

试试这个:

import datetime
.
.
datetime.datetime.strptime(row[1],'%d/%m/%Y').strftime('%Y/%m/%d')

答案 4 :(得分:0)

我推荐使用熊猫:

import pandas as pd

df = pd.read_csv("path_to_your_file")

def change_date_format(date):

    # create a list of the substrings separated by '/',
    # so in your case ['DD', 'MM', 'YYYY'] 
    split_dt = date.split("/")

    return split_dt[2] + '/' + split_dt[1] + '/' + split_dt[0]   

#apply this function to all elements of 'JOIN_DATE' columns
df.loc[:, 'JOIN_DATE'] = df.loc[:, 'JOIN_DATE'].apply(change_date_format)

关于第二个问题,你可以这样做:

to_replace = ['X', 'Z']
replace_values = ['Y', 'W']
replace_dict = dict(zip(to_replace, replace_values))

df['FROM_ID'] = df['FROM_ID'].replace(replace_dict)

回答评论中的问题,假设您创建了一个包含两列的csv:“To_Replace”和“Replace_Value”

     To_Replace    Replace_Value
0          X             Y
1          W             Z
2          A             B

您可以像这样创建上面脚本中使用的replace_dict:

import pandas as pd

replace_file = pd.read_csv(r'C:\Users\flabriol\Desktop\example_so.csv')
replace_dict = dict(zip(replace_file['To_Replace'], replace_file['Replace_Value']))