为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

紫衣仙女 2022-06-02 11:06:40
我正在尝试转换一个矩阵(df),所以我得到另一个(df2),并且不知道如何......[df]      X     Y     Za  None     x  Noneb  None  None     xc     x  None  None[df2]    X     Y     Z None     a  None None  None     b    c  None  None如果有帮助,这里是 df 的构造:import pandas as pddf = 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()}')
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您可以使用mask:


df = df.mask(df.notnull(), df.index)


print(df)

      X     Y     Z

a  None     a  None

b  None  None     b

c     c  None  None


查看完整回答
反对 回复 2022-06-02
?
www说

TA贡献1775条经验 获得超8个赞

你可以检查mul


df.eq('x').mul(df.index.tolist(),0)

Out[109]: 

   X  Y  Z

a     a   

b        b

c  c      


查看完整回答
反对 回复 2022-06-02
?
忽然笑

TA贡献1806条经验 获得超5个赞

另一种使用方法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     Z

a  None     a  None

b  None  None     b

c     c  None  None


查看完整回答
反对 回复 2022-06-02
  • 3 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信