【发布时间】:2018-03-31 05:56:24
【问题描述】:
更新问题
我正在尝试使用 Python(最好是 Pandas)对 csv 的两个日期列中的日期进行排序。对于第一个,我想获得最早的日期。对于第二个,我想获取最新的。
我的静态列表代码工作正常:
timestamps = ['08/04/2017', '08/09/2017', '08/03/2017']
sortedDates = timestamps.sort(key=lambda x: time.mktime(time.strptime(x,"%m/%d/%Y")))
01)首先我加载数据
for row in csv.reader(open('myFile.csv')):
if row[4] == '56886':
key = row[4] #key = (row[4], row[33][:4], row[4])
startDate = row[19]
xxxxx[key] = xxxxx.setdefault(key, 0) + float(row[33])
02) 然后我尝试对开始日期进行排序
df = pandas.read_csv('Bionic.csv', parse_dates=['Start Date'])
df2 = df.dropna(subset=["Start Date"])
df2['Start Date'].apply(lambda x: time.mktime(time.strptime(x,"%m/%d/%Y")))
print(df2)
我收到此错误:
sys:1: DtypeWarning: 列 (10,51,60,68,74) 具有混合类型。 在导入时指定 dtype 选项或设置 low_memory=False。
03) 然后我尝试了这个:
df = pandas.read_csv('myFile.csv', parse_dates=['Start Date'])
df = df.applymap(lambda x: np.nan if isinstance(x, basestring) and x.isspace() else x)
我遇到了同样的错误。
04)当我尝试这个时,我得到“无”值,因为该列有空字段:
startDate = startDate.split()
minStartDate = startDate.sort(key=lambda x: time.mktime(time.strptime(x,"%m/%d/%Y")))
print(minStartDate)
【问题讨论】:
-
在此处粘贴您的 CSV 数据。要么是你的数据有问题,要么是你加载它的方式有问题。
-
您的数据框列中必须有一个
nan。数据框中的nan是float类型。
标签: python pandas csv sorting date