格式化附加的数据帧

时间:2015-10-26 13:24:15

标签: python pandas duplicates append

我想追加2个数据帧:

data1:
     a
1    a
2    b
3    c
4    d
5    e

data2:
     b
1    f   
2    g
3    h
4    i
5    j

output:

1    a
2    b
3    c
4    d
5    e
6    f   
7    g
8    h
9    i
10   j

目前我正在使用:

all_data= data1.append(data2, ignore_index=True)

这给我的结果如下:

     a    b
1    a
2    b
3    c
4    d
5    e
6        f   
7        g
8        h
9        i
10       j

即。在不同的列中。 我怎样才能将它们放在同一列中?

还尝试将数据帧转换为列表,然后尝试将其追加。但它给了我错误:

TypeError: append() takes no keyword arguments

此外,还有其他功能可以从字符串的数据框中删除重复项吗? drop_duplicates()函数在我的情况下不起作用。数据仍有重复数据。

3 个答案:

答案 0 :(得分:2)

您需要更改一个列名称,因此append可以检测您要执行的操作:

data2.columns = ["a"]

data1.columns = ["b"]

然后,在使用data2.columns = ["a"]后:

all_data = data1.append(data2, ignore_index=True)
all_data
   a
0  a
1  b
2  c
3  d
4  e
5  f
6  g
7  h
8  i
9  j

在这里,您的列以data1的列名命名,如果需要,可以重命名:

all_data.columns = ["Foo"]

答案 1 :(得分:1)

mergeconcat处理密钥。在这种情况下,没有共同的列。但是,为什么不使用numpy append并创建数据框?

In [68]: pd.DataFrame(pd.np.append(data1.values, data2.values), columns=['A'])
Out[68]:
   A
0  a
1  b
2  c
3  d
4  e
5  f
6  g
7  h
8  i
9  j

答案 2 :(得分:0)

df1.columns = ['b']

Out[78]:
b
0   a
1   b
2   c
3   d
4   e

pd.concat([df1 , df2] , ignore_index=True)


Out[80]:
b
0   a
1   b
2   c
3   d
4   e
5   f
6   g
7   h
8   i
9   j