我正在添加一个新函数,该函数将DataFrame转换为下三角(如果其为上三角,反之亦然)。我正在使用的数据总是前两行只填充第一个索引。
我尝试使用此问题Pandas: convert upper triangular dataframe by shifting rows to the left
的解决方案 Data :
0 1 2 3
0 1.000000 NaN NaN NaN
1 0.421655 NaN NaN NaN
2 0.747064 5.000000 NaN NaN
3 0.357616 0.631622 8.000000 NaN
应变成:
Data :
0 1 2 3
0 NaN 8.000000 0.631622 0.357616
1 NaN NaN 5.000000 0.747064
2 NaN NaN NaN 0.421655
3 NaN NaN NaN 1.000000
答案 0 :(得分:3)
就像您需要对行和列进行逆序
yourdf=df.iloc[::-1,::-1]
yourdf
Out[94]:
3 2 1 0
3 NaN 8.0 0.631622 0.357616
2 NaN NaN 5.000000 0.747064
1 NaN NaN NaN 0.421655
0 NaN NaN NaN 1.000000
答案 1 :(得分:0)
您的系统应已安装numpy。因此,使用numpy.flip
是另一种方式,并提供更具可读性的选项
In [722]: df
Out[722]:
0 1 2 3
0 1.000000 NaN NaN NaN
1 0.421655 NaN NaN NaN
2 0.747064 5.000000 NaN NaN
3 0.357616 0.631622 8.0 NaN
In [724]: import numpy as np
In [725]: df_flip = pd.DataFrame(np.flip(df.values))
In [726]: df_flip
Out[726]:
0 1 2 3
0 NaN 8.0 0.631622 0.357616
1 NaN NaN 5.000000 0.747064
2 NaN NaN NaN 0.421655
3 NaN NaN NaN 1.000000