我有一双成对的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的转置调用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] 举报,一经查实,本站将立刻删除。