如何在熊猫中串联两个单行?

时间:2018-08-29 21:27:31

标签: python pandas

我正在尝试从一堆数据框中选择一堆单行,并尝试通过将它们连接在一起来创建一个新的数据框。

这是一个简单的例子

x=pd.DataFrame([[1,2,3],[1,2,3]],columns=["A","B","C"])

   A  B  C
0  1  2  3
1  1  2  3


a=x.loc[0,:]

A    1
B    2
C    3
Name: 0, dtype: int64

b=x.loc[1,:]
A    1
B    2
C    3
Name: 1, dtype: int64

c=pd.concat([a,b])

I end up with this:

A    1
B    2
C    3
A    1
B    2
C    3
Name: 0, dtype: int64

Whearas,我希望原始的数据帧是

   A  B  C
0  1  2  3
1  1  2  3

我可以获取值并创建一个新的数据框,但这似乎不是实现它的方法。

3 个答案:

答案 0 :(得分:2)

如果要垂直合并两个系列(垂直堆叠),则一个选项是concat并转置。

另一个人正在使用np.vstack

pd.DataFrame(np.vstack([a, b]), columns=a.index)

   A  B  C
0  1  2  3
1  1  2  3

答案 1 :(得分:2)

您似乎想从一组记录中创建一个新的数据框。有一种方法可以实现:

import pandas as pd
x = pd.DataFrame([[1,2,3],[1,2,3]], columns=["A","B","C"])
a = x.loc[0,:]
b = x.loc[1,:]
c = pd.DataFrame.from_records([a, b])
print(c)
#    A  B  C
# 0  1  2  3
# 1  1  2  3

答案 2 :(得分:1)

由于您要按index进行切片,因此我将使用.iloc,然后注意[[]][]之间的区别,它们返回一个DataFrame和{{ 1}} *

Series

要仍然使用a = x.iloc[[0]] b = x.iloc[[1]] pd.concat([a, b]) # A B C #0 1 2 3 #1 1 2 3 ,您可以做类似的事情

.loc

*有一个小警告,如果在a = x.loc[[0,]] b = x.loc[[1,]] 中复制索引0,那么x将返回x.loc[0,:]而不是DataFrame