Python:将一行追加到数据框中的所有行中

Python: Appending a row into all rows in a dataframe

我有 2 个数据框,如下所示

dff = pd.DataFrame([[0.4, 0.2, 0.4], [0.1, 0.3, 0.6], [0.3, 0.2, 0.5], [0.3,0.3,0.4]], columns=['WA', 'WB','WC'])


     WA  WB  WC
0   0.4 0.2 0.4
1   0.1 0.3 0.6
2   0.3 0.2 0.5
3   0.3 0.3 0.4

dff2 = pd.DataFrame([[0.5, 0.2, 0.4]], columns = ['stv_A', 'stv_B', 'stv_c'])
    stv_Astv_Bstv_c
0   0.5 0.2 0.4

有没有办法把只有一行的dff2附加到ddf中的每一行?因此,生成的数据框应该有 6 列和行

当您将标量指定为列时,

Pandas 会为您进行广播:

import pandas as pd

dff = pd.DataFrame([[0.4, 0.2, 0.4], [0.1, 0.3, 0.6], [0.3, 0.2, 0.5], [0.3,0.3,0.4]], columns=['WA', 'WB','WC'])
dff2 = pd.DataFrame([[0.5, 0.2, 0.4]], columns = ['stv_A', 'stv_B', 'stv_c'])

for col in dff2.columns:
    dff[col] = dff2[col][0] # Pass a scalar

print(dff)

输出:

    WA   WB   WC  stv_A  stv_B  stv_c
0  0.4  0.2  0.4    0.5    0.2    0.4
1  0.1  0.3  0.6    0.5    0.2    0.4
2  0.3  0.2  0.5    0.5    0.2    0.4
3  0.3  0.3  0.4    0.5    0.2    0.4

您可以使用:

dff[dff2.columns] = dff2.squeeze()
print(dff)

# Output
    WA   WB   WC  stv_A  stv_B  stv_c
0  0.4  0.2  0.4    0.5    0.2    0.4
1  0.1  0.3  0.6    0.5    0.2    0.4
2  0.3  0.2  0.5    0.5    0.2    0.4
3  0.3  0.3  0.4    0.5    0.2    0.4

您可以先用 different methods 重复 dff2 len(dff) 次行,然后将重复的数据帧连接到 dff

df = pd.concat([dff, pd.concat([dff2]*len(dff)).reset_index(drop=True)], axis=1)
print(df)

    WA   WB   WC  stv_A  stv_B  stv_c
0  0.4  0.2  0.4    0.5    0.2    0.4
1  0.1  0.3  0.6    0.5    0.2    0.4
2  0.3  0.2  0.5    0.5    0.2    0.4
3  0.3  0.3  0.4    0.5    0.2    0.4