猿问

pandas:将一个矩阵转换为另一个

我正在尝试转换一个矩阵(df),所以我得到另一个(df2),并且不知道如何......


[df]

      X     Y     Z

a  None     x  None

b  None  None     x

c     x  None  None


[df2]

    X     Y     Z

 None     a  None

 None  None     b

    c  None  None

如果有帮助,这里是 df 的构造:


import pandas as pd

df = pd.DataFrame([[None, 'x', None], [None, None, 'x'], ['x', None, None]],

     index=['a', 'b', 'c'],

     columns=['X', 'Y', 'Z'])

print(f'\n{df.to_string()}')


紫衣仙女
浏览 163回答 3
3回答

至尊宝的传说

您可以使用mask:df = df.mask(df.notnull(), df.index)print(df)      X     Y     Za  None     a  Noneb  None  None     bc     c  None  None

www说

你可以检查muldf.eq('x').mul(df.index.tolist(),0)Out[109]:    X  Y  Za     a   b        bc  c      

忽然笑

另一种使用方法apply:ddf = df.apply(lambda row : pd.Series(row.name if el == 'x' else el for el in row), axis=1)ddf.columns = df.columns最后一行因为列名丢失了,所以你需要重新评估它们。基本上是用'x'行索引替换所有值,保留其他值(即使它们不是None)。结果ddf是:      X     Y     Za  None     a  Noneb  None  None     bc     c  None  None
随时随地看视频慕课网APP

相关分类

Python
我要回答