我必须从不同的pandas数据帧中提取列并将它们合并到一个新的数据帧中。这就是我在做的事情:
newdf=pd.DataFrame()
newdf['col1']=sorted(df1.columndf1.unique())
newdf['col2']=df2.columndf2.unique(),
newdf['col3']=df3.columndf3.unique()
newdf
我确信三列的长度相同(我已经检查过)但是我收到了错误
ValueError: Length of values does not match length of index
我试图将它们作为pd.Series传递,但结果是一样的。我在Python 2.7上。
答案 0 :(得分:2)
似乎存在唯一值的问题长度不同。
一种可能的解决方案是将所有数据连接在一起并应用unique
如果唯一数据的大小不同,请在列的最后值中获取NaN
。
newdf = pd.concat([df1.columndf1, df2.columndf2, df3.columndf3], axis=1)
.apply(lambda x: pd.Series(x.unique()))
编辑:
另一种可能的解决方案:
a = sorted(df1.columndf1.unique())
b = list(df2.columndf2.unique())
c = list(df3.columndf3.unique())
newdf=pd.DataFrame({'col1':a, 'col2':b, 'col3':c})