根据特定列替换选定的行值

Replace selected row values based on certain column

我想在 df 中找到 C 包含 X1 的行,并将 A 中的值替换为 C 中的值,然后替换值在 C 中,值在 result1 中(将 Cresult1 中的值移到最左边)。

df:

   A        C      result1   result2
0  NaN      X1     10/10/10  NaN
1  TEXT:    >1     TEXT       <1
2  NaN      X1     10/11/11  <10

预期输出:

   A        C         result1    result2
0  X1       10/10/10  NaN        NaN         
1  TEXT:    >1        TEXT       <1
2  X1       10/11/11  NaN        <10

maskshift:

subset = df.loc[:, "A":"result1"]
df.loc[:, "A":"result1"] = subset.mask(df.C.eq("X1"), subset.shift(-1, axis=1))

对于C等于"X1"的行,subset中的位置用移位的subset.

填充

得到

>>> df

       A         C result1 result2
0     X1  10/10/10     NaN     NaN
1  TEXT:        >1    TEXT      <1
2     X1  10/11/11     NaN     <10