我有一个看起来像这样的数据框
<ComboBox Name="test" Grid.Column="1" Grid.Row="2" VerticalAlignment="Center" IsReadOnly="True" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource enumDescriptionConverter},ConverterParameter=Value}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我希望它看起来像这样
Index Z1 Z2 Z3 Z4
A 0 0 1 3
B 0 2 0 0
C 2 0 1 0
D 4 0 3 0
E 0 0 2 0
基本上我想用该特定行的相应索引元素替换非零值
我怎样才能以最简单的方式做到这一点
EDIT1
有没有办法保留非零值和索引值 例如,我希望它像
Index Z1 Z2 Z3 Z4
A 0 0 A A
B 0 B 0 0
C C 0 C 0
D D 0 D 0
E 0 0 E 0
如果不完全采用相同的格式,那么这是可以接受的,但我也希望有这个数字
答案 0 :(得分:2)
axis=0
使用DataFrame.where
或DataFrame.mask
:
df = df.where(df == 0, df.index.to_series(), axis=0)
或者:
df = df.mask(df != 0, df.index.to_series(), axis=0)
print (df)
Z1 Z2 Z3 Z4
Index
A 0 0 A A
B 0 B 0 0
C C 0 C 0
D D 0 D 0
E 0 0 E 0
df1 = df.astype(str).add(')').radd('(').radd(df.index.to_series(), 0)
df = df.where(df == 0, df1)
print (df)
Z1 Z2 Z3 Z4
Index
A 0 0 A(1) A(3)
B 0 B(2) 0 0
C C(2) 0 C(1) 0
D D(4) 0 D(3) 0
E 0 0 E(2) 0
答案 1 :(得分:1)
这也可以用类似的方式完成工作:
df[df>0] = df.index.tolist()