如何解决用表格中的值创建仅包含对角线数据的一行
我在熊猫中有下表-
>>>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
我想摆脱减少null值的问题,并将数据放在这样的一行中:
>>>index1 index2 index3 index4 index5 index6 index7
0 sig sig sig sig no sig no sig sig
很重要的一点是,如果使用statemnt,我将获得具有空数据的第一个表;我已经为每个索引计算了统计检验,并根据p值,使用append给出了sig或没有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)
因此,我相信附加文件会创建包含许多空值的大表。
我的最终目标:在循环阶段中获取一张表(例如,使用除append之外的其他内容),或者在大表之后“修复”以获得一张表
解决方法
您可以尝试返回np.diagonal
个元素的diagonal
:
d = pd.DataFrame([np.diagonal(df)],columns=df.columns)
index1 index2 index3 index4 index5 index6 index7
0 sig sig sig sig no sig no sig sig
,
IIUC,使用pandas.DataFrame.bfill
:
new_df = df.bfill().head(1)
print(new_df)
输出:
index1 index2 index3 index4 index5 index6 index7
0 sig sig sig sig no sig no sig sig
,
使用stack
和droplevel
的另一个选择;
df.stack().droplevel(0).to_frame().T
index1 index2 index3 index4 index5 index6 index7
0 sig sig sig sig no sig no sig sig
,
np.diagonal
的熊猫解决方案是df.lookup
df_diag = pd.DataFrame([df.lookup(df.index,df.columns)],columns=df.columns)
Out[47]:
index1 index2 index3 index4 index5 index6 index7
0 sig sig sig sig no-sig no-sig sig
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。