我在 pandas.read_csv 函数上遇到一个奇怪的问题。我将数据框导出到 csv 中,但是当我重新导入相同的 csv 时,当我尝试合并时,已导入回来的数据不起作用(合并显示左侧的所有数据,并且没有我尝试过的数据)将其合并)。如果我在导出到 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
我已经检查和比较了数据帧在导出之前和从 csv 导入之后看起来完全相同。(我打印了输出两次,一次在导出之前,一次在导出之后)我还检查了并且日期类型都相同。
我需要导出 csv 才能在外部环境中使用,因为我无法附加本地数据库。
附上命令行打印的副本,显示两个数据帧完全相同
下面附有我导出的 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')
关于python pandas导出的csv格式与导入的问题不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44621720/