python pandas导出的csv格式与导入的问题不同

时间:2017-06-19 03:09:27

标签: python csv pandas

我在pandas.read_csv函数上有一个奇怪的问题。我将我的数据框导出到csv中,但是当我重新导入相同的csv时,导入的数据在我尝试合并时不起作用(合并显示左边的所有数据,没有我尝试过的数据)合并它)。如果我在将原始数据导出到csv之前使用原始数据,它可以完全正常工作。(合并是完美的)。

    curses.start_color()
    curses.init_color(17, 200,200,200)

    curses.init_pair(1, curses.COLOR_MAGENTA, curses.COLOR_BLACK)    
    curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLACK)
    curses.init_pair(3, curses.COLOR_CYAN, curses.COLOR_BLACK)
    curses.init_pair(4, 17, curses.COLOR_BLACK)

    print curses.can_change_color() #returns True
    print curses.color_content(17) #(200,200,200), 
    stdscr.addstr("test",curses.color_pair(4)) #yet this text is blue

我已经检查并比较了导出之前和从csv导入之后数据帧看起来完全相同。(我打印输出两次,导出前一次,之后一次)我也检查过,日期类型都是一样的。

我需要导出csv才能使用外部环境,因为我无法连接我的本地数据库。

附上cmdline打印的副本,显示两个数据帧完全相似

cmd line interface image

下面附带的

是我导出的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

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

1 个答案:

答案 0 :(得分:1)

在调用合并之前,请先尝试使用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')