使用仅对角线数据的表中的值创建一行

Reu*_*eut 3 python null if-statement append pandas

我在熊猫中有下表-

>>>index1   index2   index3   index4   index5   index6   index7
0   sig      null    null     null     null     null     null
1   null      sig     null     null     null     null     null
2   null      null    sig      null     null     null     null
3   null      null    null     sig      null     null     null
4   null      null    null     null     no sig   null     null
5   null      null    null     null     null     no sig   null
6   null      null    null     null     null     null     sig
Run Code Online (Sandbox Code Playgroud)

我想摆脱减少空值并将数据放在一行中,如下所示:

>>>index1   index2   index3   index4   index5   index6   index7
0   sig      sig     sig      sig      no sig   no sig   sig
Run Code Online (Sandbox Code Playgroud)

重要的是,我通过 if 语句获得了第一个包含空数据的表;我已经计算了每个索引的统计检验,并根据 p 值,我使用 append 给每个索引值 sig 或 no sig:

for i in indices:
    stat, p = friedmanchisquare(df[1][i],df[2][i],df[3][i],df[4][i],df[5][i])
    #print(i,p)
    if p<0.05:
        friedman=friedman.append({i:'sig'},ignore_index=True)
    else:
        friedman=friedman.append({i:'no sig'},ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

所以我相信 append 会创建一个包含许多空值的大表。

我的最终目标:在循环阶段获得单行表(例如使用除附加之外的其他内容?)或在获得单行之后“修复”大表

Shu*_*rma 8

您可以尝试np.diagonal哪些返回diagonal元素:

d = pd.DataFrame([np.diagonal(df)], columns=df.columns)
Run Code Online (Sandbox Code Playgroud)
  index1 index2 index3 index4  index5  index6 index7
0    sig    sig    sig    sig  no sig  no sig    sig
Run Code Online (Sandbox Code Playgroud)

  • 我认为在这种情况下“np.diagonal”会更有效。已投赞成票;) (2认同)