如何使用 Pandas 将数据帧的第一行复制到数据帧的长度

How can I duplicate the first row of a dataframe to the length of the dataframe using Pandas

我想复制此数据框的第一行,但保持索引和第一列相同。我找不到让第一列保持不变的方法。

这只是一个最小化的示例,我正在处理 1000 行。

这是尝试过的:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X':[1,2,3,4,5], 'Y':[84,94,89,83,86],'Z':[86,97,96,72,83]});

df.iloc[np.arange(1).repeat(len(df))].reset_index(drop=True)

这就是我要找的东西

({'X':[1,2,3,4,5], 'Y':[84,84,84,84,84],'Z':[86,86,86,86,86]});

只需指定您想要的列,然后使用 .loc:

cols = ['Y', 'Z']
df.loc[:, cols] = df.loc[0, cols].to_numpy()

输出:

>>> df
   X   Y   Z
0  1  84  86
1  2  84  86
2  3  84  86
3  4  84  86
4  5  84  86

或者,如果您希望指定您不需要的列,请使用df.columns.difference:

cols = df.columns.difference(['X'])
df.loc[:, cols] = df.loc[0, cols].to_numpy()

为什么不

df['Y'] = [df['Y'].iloc[0]]*len(df)
df['Z'] = [df['Z'].iloc[0]]*len(df)

这很好用

df.iloc[1:, 1:] = df.iloc[0, 1:].values