通过从其他数据帧中提取列来创建新的pandas数据帧 - ValueError

时间:2018-01-16 12:32:22

标签: python python-2.7 pandas dataframe

我必须从不同的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上。

1 个答案:

答案 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})