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

标签 python csv pandas

我在 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 才能在外部环境中使用,因为我无法附加本地数据库。

附上命令行打印的副本,显示两个数据帧完全相同

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')

关于python pandas导出的csv格式与导入的问题不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44621720/

相关文章:

python - pyspark如何与java集成?

python - 在收到无效输入后,如何阻止程序跳转到其他if语句?

python - pandas如何获取当前连续正数的个数?

python - 根据一列中存在的列名填充数据框中的其他列

python - 在 python 中解密 ActiveSupport::MessageEncryptor 加密值

python - 从动态导入的模块中的类的字符串名称动态实例化?

python - 在 CSV 文件中查找多次出现的对

csv - Julia - 重写 CSV

java - d3js 动态 csv 从下拉列表切换

python - 使用 np.logspace() 创建叠加 KDE 的直方图