R 复制列并将结果与另一个数据帧连接

R 复制列并将结果与另一个数据帧连接,r,python,pandas,dataframe,R,Python,Pandas,Dataframe,有一个有趣的例子,它是这样的: 我有这个df1: A B C 1 2 3 5 7 9 其中,abc是列名称 我有另一个带有一列的df2: A 1 2 3 4 我想为df1的每一列添加df2,从而创建这个最终版本 数据帧: A B C 1 2 3 5 7 9 1 1 1 2 2 2 3 3 3 4 4 4 有可能吗 我想知道,在熊猫身上如何做到这一点 我在下面发布了我自己的解决方案,但我也在寻找其他更好的替代方案 选项1 使用np.重复和df.追加 df2 = pd.DataFrame(

有一个有趣的例子,它是这样的:

我有这个df1:

A B C
1 2 3
5 7 9
其中,
abc
是列名称

我有另一个带有一列的df2:

A
1
2
3
4
我想为df1的每一列添加df2,从而创建这个最终版本 数据帧:

A B C 
1 2 3
5 7 9
1 1 1
2 2 2
3 3 3
4 4 4
有可能吗

我想知道,在熊猫身上如何做到这一点



我在下面发布了我自己的解决方案,但我也在寻找其他更好的替代方案

选项1

使用
np.重复
df.追加

df2 = pd.DataFrame(df2.values.repeat(len(df1.columns), axis=1),\
                                                  columns=df1.columns)
out = df1.append(df2)
out

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4
out = df1.append(pd.concat([df2.A] * len(df1.columns), 1, keys=df1.columns))
print(out)

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4

选项2

使用
pd.concat
df.append

df2 = pd.DataFrame(df2.values.repeat(len(df1.columns), axis=1),\
                                                  columns=df1.columns)
out = df1.append(df2)
out

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4
out = df1.append(pd.concat([df2.A] * len(df1.columns), 1, keys=df1.columns))
print(out)

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4


第二步也可以使用
pd.concat
,但
df.append
较短。

选项1

使用
np.重复
df.追加

df2 = pd.DataFrame(df2.values.repeat(len(df1.columns), axis=1),\
                                                  columns=df1.columns)
out = df1.append(df2)
out

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4
out = df1.append(pd.concat([df2.A] * len(df1.columns), 1, keys=df1.columns))
print(out)

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4

选项2

使用
pd.concat
df.append

df2 = pd.DataFrame(df2.values.repeat(len(df1.columns), axis=1),\
                                                  columns=df1.columns)
out = df1.append(df2)
out

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4
out = df1.append(pd.concat([df2.A] * len(df1.columns), 1, keys=df1.columns))
print(out)

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4


第二步也可以使用
pd.concat
,但
df.append
较短。

让我们使用
pd.concat
ffill
轴=1:

pd.concat([df1,df2]).ffill(1).astype(int)
输出:

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4

让我们使用轴为1的
pd.concat
ffill

pd.concat([df1,df2]).ffill(1).astype(int)
输出:

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4

选项1
应用

df1.apply(pd.Series.append, to_append=df2.A)

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4

选项2
numpy.vstack
numpy.tile

pd.DataFrame(
    np.vstack([df1, np.tile(df2, df1.shape[1])]),
    columns=df1.columns
)

   A  B  C
0  1  2  3
1  5  7  9
2  1  1  1
3  2  2  2
4  3  3  3
5  4  4  4

选项1
应用

df1.apply(pd.Series.append, to_append=df2.A)

   A  B  C
0  1  2  3
1  5  7  9
0  1  1  1
1  2  2  2
2  3  3  3
3  4  4  4

选项2
numpy.vstack
numpy.tile

pd.DataFrame(
    np.vstack([df1, np.tile(df2, df1.shape[1])]),
    columns=df1.columns
)

   A  B  C
0  1  2  3
1  5  7  9
2  1  1  1
3  2  2  2
4  3  3  3
5  4  4  4

哦这很聪明。利用这个事实,它产生了南。我不喜欢铸造浮动和必须重铸为int。哦!这很聪明。利用这个事实,它产生了南。我不喜欢铸造浮动和必须重铸为int。这些真的很漂亮。这些真的很漂亮。