• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

python熊猫导出csv格式不同于导入的问题

python 来源:user3655574 10次浏览

我对pandas.read_csv函数有一个奇怪的问题。我将数据框导出到csv中,但是当我重新导入相同的csv时,当我尝试合并时,导入的数据不起作用(合并显示了左侧的所有数据,没有尝试过合并)。如果我在将原始数据导出到csv之前使用原始数据,则它工作得很好(合并是完美的)。python熊猫导出csv格式不同于导入的问题

df = df.values_list('id','teacher_id','uniquecount','nonuniquecount','msgcount','ordercount','date','updated','timestamp', flat=False) 
#inserting the collected data into a dateframe for manipulation 
df = pd.DataFrame(list(df)) 
#giving the dataframe column names 
df.columns = ['id','teacher_id','uniquecount','nonuniquecount','msgcount','ordercount','date','updated','timestamp'] 
df = df[['id','teacher_id','uniquecount','nonuniquecount','msgcount','ordercount','date']] 
#rename required columns 
df.rename(columns={'uniquecount':'Unique Views','nonuniquecount':'Views','msgcount':'Messages','ordercount':'Orders'}, inplace=True) 

print df 
print df.dtypes 
# exporting df out to a csv 
# df.to_csv('test.csv', header=True) 
# importing the df back from a csv 
df = pd.read_csv('test.csv', index_col=0) 
print df 
print df.dtypes 

#insert dates 
numdays = 14 
base = datetime.datetime.today().date() 
date_list = [base - datetime.timedelta(days=x) for x in range(0, numdays)] 
dates = pd.DataFrame(date_list) 
dates.columns = ['date'] 

#merge the complete dates with the dateframe 
df = pd.merge(dates ,df , on=['date'] , how='left') 
# print df 

我已经确认并比较了dataframes长得一模一样出口前从CSV导入后,(我打印输出的两倍,出口前和一个后一次),我也查了一下datetypes是全部都一样。

我需要导出csv与外部环境一起工作,因为我不能附加我的本地数据库。

附CMDLINE打印的副本显示,这两个dataframes是完全相似的

cmd line interface image

附在下面是我导出的csv样品

,id,teacher_id,Unique Views,Views,Messages,Orders,date 
0,47,31,1,6,0,0,2017-05-09 
1,56,31,1,9,0,0,2017-05-10 
2,67,31,2,11,0,0,2017-05-14 
3,71,31,3,15,0,0,2017-05-15 
4,79,31,3,17,0,0,2017-06-12 
5,83,31,3,18,0,1,2017-06-18 

有没有人有任何想法这个奇怪的问题?

===========解决方案如下:

之前调用合并,尝试转换使用to_datetime第一这两个日期被称为在回答here

df.date = pd.to_datetime(df.date) 
dates.date = pd.to_datetime(dates.date) 

#merge the complete dates with the dateframe 
df = pd.merge(dates ,df , on=['date'] , how='left') 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)