我希望在'Date'列上使用pandas加入两个数据帧。我通常使用df2 = pd.concat([df,df1],axis = 1),但由于某种原因,这不起作用。
在这个例子中,我从sql文件中提取数据,创建一个名为“Date”的新列,该列合并我的年份和月份列,然后进行透视。当我尝试并连接两个数据帧时,数据框并排显示而不是合并在一起。
出现了什么: 猫的日期计数狗的日期数
我想要的是:
狗的狗数日期计数
有什么想法吗? 我的另一个问题是我试图确保Date列将excel写为字符串而不是datetime函数。在考虑解决方案时请记住这一点。
这是我的代码:
executeScriptsFromFile('cats.sql')
df = pd.DataFrame(cursor.fetchall())
df.columns = [rec[0] for rec in cursor.description]
monthend = {'Q1':'3/31','Q2':'6/30','Q3':'9/30','Q4':'12/31'}
df['Date']=df['QUARTER'].map(monthend)+'/'+ df['YEAR']
df['Date'] = pd.to_datetime(df['Date'])
df10= df.pivot_table(['Breed'], ['Date'], aggfunc=np.sum,fill_value=0)
df10.reset_index(drop=False, inplace=True)
df10.reindex_axis(['Breed', 'Count of Cats'], axis=1)
df10.columns = ('Breed', 'Count of Cats')
executeScriptsFromFile('dogs.sql')
df = pd.DataFrame(cursor.fetchall())
df.columns = [rec[0] for rec in cursor.description]
monthend = {'Q1':'3/31','Q2':'6/30','Q3':'9/30','Q4':'12/31'}
df['Date']=df['QUARTER'].map(monthend)+'/'+ df['YEAR']
df['Date'] = pd.to_datetime(df['Date'])
df11= df.pivot_table(['Breed'], ['Date'], aggfunc=np.sum,fill_value=0)
df11.reset_index(drop=False, inplace=True)
df11.reindex_axis(['Breed', 'Count of Dogs'], axis=1)
df11.columns = ('Breed', 'Count of Dogs')
df11a= df11.round(0)
df12= pd.concat([df10, df11a],axis=1)
答案 0 :(得分:1)
我认为你必须删除代码:
df10.reset_index(drop=False, inplace=True)
df11.reset_index(drop=False, inplace=True)
因为date
的{{1}}需要等级index
date
。
也可以将索引转换为string
使用:
df.inde = df.index.astype(str)