微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 以成对pandas df更新值

我有一双成对的df:

raw_data = {0: [5,4,6,8,9], 
        1: [4,8,1,2,5], 
        2: [42, 52, 36, 24, 73], 
        3: [0, 0, 0, 2, 1],
        4: [2, 2, 0, 2, 0]}
df = pd.DataFrame(raw_data, columns = [0,1,2,3,4])

我想将任意零设置为其对的值,例如在col 0 row 3处为0,因此它的对将位于col 3 row 0,在此示例中为8.

我可以通过迭代来做到这一点:

for i in df.index:
    for j in df.columns:
        if df.loc[i,j] == 0:
            df.loc[i,j] = df.loc[j,i]

但它的速度很慢.我可以应用函数或df方法快速完成此操作吗?

谢谢!

解决方法:

使用df的转置调用NaNs和pd.DataFrame.fillna替换0.

df[df != 0].fillna(df.T).astype(int)

   0  1   2   3   4
0  5  4  42   8   2
1  4  8  52   2   2
2  6  1  36  24  73
3  8  2  24   2   2
4  9  5  73   1   0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐