我是一名新手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
提前感谢您的帮助。我已经在互联网上搜了好几个小时了,但是我感觉很困难,但希望我能继续前进。谢谢!
答案 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']))