我正在尝试转换一个矩阵(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
忽然笑
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
添加回答
举报
0/150
提交
取消