python - 如何在Python中使用concat将数据帧的每一行转换为新列

标签 python pandas concatenation

如果我有数据框,

df1 = pd.DataFrame(
{
    "A": ["A0", "A1", "A2", "A3"],
    "B": ["B0", "B1", "B2", "B3"],
    "C": ["C0", "C1", "C2", "C3"],
    "D": ["D0", "D1", "D2", "D3"],
},
index=[0, 1, 2, 3],)
df2 = pd.DataFrame(
{
    "A": ["A4", "A5", "A6", "A7"],
    "B": ["B4", "B5", "B6", "B7"],
    "C": ["C4", "C5", "C6", "C7"],
    "D": ["D4", "D5", "D6", "D7"],
},
index=[4,5,6,7],)

我想使用 pd.concat 将这两个数据帧组合为

dfnew = pd.concat([df1.loc[0],
               df1.loc[1],
                df1.loc[2],
               df1.loc[3],
              df2.loc[4],
              df2.loc[5],
              df2.loc[6],
              df2.loc[7]],
             axis=0,sort=False)
dfnew = dfnew.to_frame().transpose()

dfnew 是一个 1 行 x 32 列的数据框。 但是我在 df1 和 df2 中有很多行,或者我想在循环中组合 df1 和 df2 的不同行数怎么样?我可以对 concat .loc[] 部分做什么?或者还有其他方法可以做到这一点吗?

谢谢您。

最佳答案

IIUC,您可以堆叠各个数据帧、连接并 reshape :

dfnew = pd.concat([df1.stack(), df2.stack()]).droplevel(0).to_frame().T

输出:

    A   B   C   D   A   B   C   D   A   B   C   D   A   B   C   D   A   B   C   D   A   B   C   D   A   B   C   D   A   B   C   D
0  A0  B0  C0  D0  A1  B1  C1  D1  A2  B2  C2  D2  A3  B3  C3  D3  A4  B4  C4  D4  A5  B5  C5  D5  A6  B6  C6  D6  A7  B7  C7  D7

关于python - 如何在Python中使用concat将数据帧的每一行转换为新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71321630/

相关文章:

python - 如何从 Pandas 数据帧中获取 1's and 0' 的最大连续数量

python - 使用函数替换空值

python - 在 groupby 或任何带参数的聚合函数中使用 np.average

python - 如何根据三个数据框的 if 语句的结果创建数据框

python - 如何使字典键是 Pandas 数据帧的一列到列?

python - 为什么\0 在 Python 正则表达式替换中不起作用,即使用 sub() 或 expand(),而 match.group(0) 和\1,\2, ...?

java - 导入错误: No module named py4j. java_gateway

concatenation - c 预处理器在将数字与符号连接时添加一个空格

python - 在python 3中连接文件

javascript - 使用 javascript 连接两个变量并查找数组值位置