df1 为: A B C D 0 A0 B0 C0 D0 1 A1 B1 C1 D1 2 A2 B2 C2 D2 3 A3 B3 C3 D3 df2 为: A B C D 1 A1 B4 C4 D4 2 A5 B5 C5 D5 3 A6 B6 C6 None 4 A7 B7 C7 D7 如果想要修改 df2 中第一行的值,使用: `df2.loc[df2['A']=='A1', ('B', 'C', 'D')] = df2.loc[df2['A']=='A5', ('B', 'C', 'D')]`,df2 会变为: A B C D 1 A1 NaN NaN NaN 2 A5 B5 C5 D5 3 A6 B6 C6 None 4 A7 B7 C7 D7 第一行的值全部变为了空值,但是同样的句式,使用 df1 给 df2 的第一行赋值: `df2.loc[df2['A']=='A1', ('B', 'C', 'D')] = df1.loc[df1['A']=='A1', ('B', 'C', 'D')]`,则可以成功赋值,df2 为: A B C D 1 A1 B1 C1 D1 2 A5 B5 C5 D5 3 A6 B6 C6 None 4 A7 B7 C7 D7 另外,如果将第一个赋值语句改为:`df2.loc[df2['A']=='A1', ('B', 'C', 'D')] = df2.loc[df2['A']=='A5', ('B', 'C', 'D')].values`,也是可以赋值成功的: A B C D 1 A1 B5 C5 D5 2 A5 B5 C5 D5 3 A6 B6 C6 None 4 A7 B7 C7 D7 请教一下大神,为什么结果会这样?