







import pandas as pd data1 = pd.read_excel(r"D:\1600757400_452096.xlsx") result1=pd.DataFrame() for i in range(1,12,2): coli=data1.iloc[:,[0,i,i+1]] coli.columns=["序号","日期","数字"] result1=pd.concat([result1,coli],axis=0) result1.sort_values(by=["序号","日期"],inplace=True) result2=pd.DataFrame() for i in range(1,10): temp1=pd.DataFrame(result1[result1["序号"]==i]["日期"]).T temp2=pd.DataFrame(result1[result1["序号"]==i]["数字"]).T temp1.index=[i] temp2.index=[i] temp3=pd.concat([temp1,temp2],axis=1) temp3.index=[i] result2=pd.concat([result2,temp3],axis=0)
上面代码的问题在于,你进行两个数据框纵向合并的时候,需要要让两个数据框的列名字,一一对应
你看下现在你的result2和temp3数据框如下
如果想正确合并,你需要修改下列名字

File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals\managers.py", line 350, in _verify_integrity
"tot_items: {1}".format(len(self.items), tot_items)
AssertionError: Number of manager items must equal union of block items
# manager items: 24, # tot_items: 156

我把代码稍微改了下,为什么最后result2 concat报错呢
data1 = pd.read_excel(r"C:\Users\wxstt\Desktop\1600757400_452096.xlsx")
result1=pd.DataFrame()
for i in range(1,12,2):
coli=data1.iloc[:,[0,i,i+1]]
coli.columns=["序号","日期","数字"]
result1=pd.concat([result1,coli],axis=0)
result1.sort_values(by=["序号","日期"],inplace=True)
result2=pd.DataFrame()
for i in range(1,10):
temp1=pd.DataFrame(result1[result1["序号"]==i]["日期"]).T
temp2=pd.DataFrame(result1[result1["序号"]==i]["数字"]).T
temp1.index=[i]
temp2.index=[i]
temp3=pd.concat([temp1,temp2],axis=1)
temp3.index=[i]
result2=pd.concat([result2,temp3],axis=0)

import pandas as pd data=pd.read_excel("D:\\360安全浏览器下载\\1600757400_452096.xlsx") result1=pd.DataFrame() for i in range(1,12,2): coli=data.iloc[:,[0,i,i+1]] coli.columns=["序号","日期","数值"] result1=pd.concat([result1,coli],axis=0) result1.sort_values(by=["序号","日期"],inplace=True) riqilist=["日期"+str(i) for i in range(1,7)] shuzhilist=["数值"+str(i) for i in range(1,7)] shunxu=[] for i in range(6): shunxu.append(riqilist[i]) shunxu.append(shuzhilist[i]) #生成一个空白的数据框接收结果 result2=pd.DataFrame() #对每个序号进行遍历 for i in range(1,10): #将序号i对应的日期调出来生成一个数据框 temp1=pd.DataFrame(result1[result1["序号"]==i]["日期"]).T temp1.columns=riqilist temp1.index=[i] #将序号i对应的数值调出来生成一个数据框 temp2=pd.DataFrame(result1[result1["序号"]==i]["数值"]).T temp2.columns=shuzhilist temp2.index=[i] #将temp1和temp2进行横向合并 temp3=pd.concat([temp1,temp2],axis=1) temp3["序号"]=i #按照要求对变量名字进行排序 temp4=temp3.reindex(columns=["序号"]+shunxu) #将格式正确的数据放入到result2中 result2=pd.concat([result2,temp4],axis=0)

df = pd.read_excel(r"C:\Users\12234\Desktop\bin\1600757400_452096.xlsx")
df
kk = pd.DataFrame()
qq = range(1,12,2)
for i in qq:
cut1 = df.iloc[:,[i,i+1]]
ss1 = cut1.sort_values(by=["日期{num}".format(num=qq.index(i)+1)],ignore_index=True)
kk = pd.concat([kk,ss1],axis=1)
# kk.reset_index(drop = True,inplace = True)
kk

import pandas as pd data=pd.read_excel("D:\\360安全浏览器下载\\1600757400_452096.xlsx") result1=pd.DataFrame() for i in range(1,12,2): coli=data.iloc[:,[0,i,i+1]] coli.columns=["序号","日期","数值"] result1=pd.concat([result1,coli],axis=0) result1.sort_values(by=["序号","日期"],inplace=True)