Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将所有行更改为除一列之外具有与第一行相同的数据_Python_Pandas - Fatal编程技术网

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