Python 如何将两个数据帧列堆叠在彼此的顶部?

Python 如何将两个数据帧列堆叠在彼此的顶部?,python,pandas,dataframe,data-analysis,Python,Pandas,Dataframe,Data Analysis,是否有库函数或正确的方法将两个熊猫数据框列堆叠在彼此的顶部 例如,将4列分成2列: a1 b1 a2 b2 1 2 3 4 5 6 7 8 到 我阅读的Pandas数据帧文档大部分只涉及连接行和执行行操作,但我确信必须有一种方法来实现我所描述的,而且我确信它非常简单 任何帮助都会很好 您可以使用pandas.DataFrame.iloc选择前两列和后两列。然后,将这两部分的列名更改为c和d。之后,您可以使用pandas.concat加入它们 import pa

是否有库函数或正确的方法将两个熊猫数据框列堆叠在彼此的顶部

例如,将4列分成2列:

a1  b1  a2  b2
 1   2   3   4
 5   6   7   8

我阅读的Pandas数据帧文档大部分只涉及连接行和执行行操作,但我确信必须有一种方法来实现我所描述的,而且我确信它非常简单


任何帮助都会很好

您可以使用
pandas.DataFrame.iloc
选择前两列和后两列。然后,将这两部分的列名更改为
c
d
。之后,您可以使用
pandas.concat
加入它们

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(1, 9).reshape((2, 4)),
        columns=["a1", "b1", "a2", "b2"])

part1 = df.iloc[:,0:2]
part2 = df.iloc[:,2:4]

new_columns = ["c", "d"]
part1.columns = new_columns
part2.columns = new_columns

print pd.concat([part1, part2], ignore_index=True)
这将为您提供:

   c  d
0  1  2
1  5  6
2  3  4
3  7  8

我会做下面的事情

import pandas as pd
df = pd.DataFrame({'a1' : pd.Series([1,5]), 'b1' : pd.Series([2,6]), 'a2' : pd.Series([3,7]), 'b2' : pd.Series([4,8])})

df1 = df[['a1','b1']]
df2 = df[['a2','b2']]
df1.columns = ['c','d']
df2.columns = ['c','d']
df1.append(df2)
我刚才看到@Carsten也回答了这个问题,我也同意他的回答,或者使用:

import pandas as pd
df = pd.DataFrame({'a1' : pd.Series([1,5]), 'b1' : pd.Series([2,6]), 'a2' : pd.Series([3,7]), 'b2' : pd.Series([4,8])})

df1 = df[['a1','b1']]
df2 = df[['a2','b2']]
df1.columns = ['c','d']
df2.columns = ['c','d']
df1.append(df2)
# Make data as in previous answers 
import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(1, 9).reshape((2, 4)),
                  columns=["a1", "b1", "a2", "b2"])

# Melt both columns and concatenate 
df = pd.concat([
    df[['a1', 'a2']].melt(value_name='c'), 
    df[['b1', 'b2']].melt(value_name='d')], 
    axis=1)

# Discard unwanted columns melt creates
df = df[['c', 'd']]