Python 将所有行更改为除一列之外具有与第一行相同的数据
我有一个名为Python 将所有行更改为除一列之外具有与第一行相同的数据,python,pandas,Python,Pandas,我有一个名为df的数据帧,如下所示: x1 x2 x3 x4 x5 x6 x7 x8 1 0 5 6 10 11 56 7 67 10 4 87 2 34 22 12 44 16 9 9 5 11 56 7 99 82 10 6 87 9 5 8 5 54 66 7 36 3 2 7 我想将每一行更改为与第1行类似的行,但列x1除外 我的预期产出是: x1 x2 x3 x4
df
的数据帧,如下所示:
x1 x2 x3 x4 x5 x6 x7 x8
1 0 5 6 10 11 56 7
67 10 4 87 2 34 22 12
44 16 9 9 5 11 56 7
99 82 10 6 87 9 5 8
5 54 66 7 36 3 2 7
我想将每一行更改为与第1行类似的行,但列x1除外
我的预期产出是:
x1 x2 x3 x4 x5 x6 x7 x8
1 0 5 6 10 11 56 7
67 0 5 6 10 11 56 7
44 0 5 6 10 11 56 7
99 0 5 6 10 11 56 7
5 0 5 6 10 11 56 7
我怎样才能在熊猫身上做到这一点
df.loc[:, "x2":] = df.loc[0, "x2":].values
print(df)
印刷品:
x1x2x3x4x5x6x7x8
0 1 0 5 6 10 11 56 7
1 67 0 5 6 10 11 56 7
2 44 0 5 6 10 11 56 7
3 99 0 5 6 10 11 56 7
4 5 0 5 6 10 11 56 7
编辑:对于列
x4
:
x4 = df["x4"].copy()
df.loc[:, :] = df.loc[0, :].values
df["x4"] = x4
print(df)
印刷品:
x1x2x3x4x5x6x7x8
0 1 0 5 6 10 11 56 7
1 1 0 5 87 10 11 56 7
2 1 0 5 9 10 11 56 7
3 1 0 5 6 10 11 56 7
4 1 0 5 7 10 11 56 7
与:
cols = ['x1'] #change list as required ex: cols = ['x1','x2']
out = df.assign(**df.drop(cols,1).iloc[0])
与行范围
1一起使用:
指定行0
。所有操作在列范围1:
df.iloc[1:, 1:] = df.iloc[0, 1:]
print(df)
x1 x2 x3 x4 x5 x6 x7 x8
0 1 0 5 6 10 11 56 7
1 67 0 5 6 10 11 56 7
2 44 0 5 6 10 11 56 7
3 99 0 5 6 10 11 56 7
4 5 0 5 6 10 11 56 7
如果我想对x3、x4等进行同样的操作,这是否可行?@Eisen您可以将列保存到副本中,然后重新分配。我更新了我的答案。
print(out)
x1 x2 x3 x4 x5 x6 x7 x8
0 1 0 5 6 10 11 56 7
1 67 0 5 6 10 11 56 7
2 44 0 5 6 10 11 56 7
3 99 0 5 6 10 11 56 7
4 5 0 5 6 10 11 56 7
df.iloc[1:, 1:] = df.iloc[0, 1:]
print(df)
x1 x2 x3 x4 x5 x6 x7 x8
0 1 0 5 6 10 11 56 7
1 67 0 5 6 10 11 56 7
2 44 0 5 6 10 11 56 7
3 99 0 5 6 10 11 56 7
4 5 0 5 6 10 11 56 7