以下工作:
df1 = pd.DataFrame([[1, 2, 3]], columns=['a', 'b', 'c'])
df2 = pd.DataFrame(columns=['a', 'b', 'c'])
pd.concat([df1, df2])
当然应该这样。但是,以下内容应该完全相同,但它不起作用:
od3 = OrderedDict([('a', [1]), ('b', [2]), ('c', [3])])
od4 = OrderedDict([('a', []), ('b', []), ('c', [])])
df3 = pd.DataFrame(od3)
df4 = pd.DataFrame(od4)
pd.concat([df3, df4])
这段代码产生
ValueError: Shape of passed values is (3, 1), indices imply (3, 0)
奇怪的是,这些都能起作用:
pd.concat([df3.drop_duplicates(), df4.drop_duplicates()])
pd.concat([df3, df4.drop_duplicates()])
pd.concat([df3.drop_duplicates(), df4])
尽管这些导致数据帧具有float64
而不是int64
怎么回事?看起来,Pandas存储df3
与df1
不同,即使它们看起来完全相同,而且.drop_duplicates()
方法将df3
转换为规范形式。(?)有什么想法吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐