1

我必须将一列与数据框中的所有其他列进行比较。我必须与其他人比较的列位于位置4,因此我编写df.iloc [x,4]来获取列值。然后我必须考虑这些值,并将它们与下一列中的值相乘(例如df.iloc [x,5]),在数据框中创建一个新列并保存结果。然后我不得不重复这个过程来结束现有的列(原始数据帧有43列,所以最后它是df.iloc [x,43]) 我怎么能在python中做到这一点? 如果可能,你可以做一些例子吗?我试着把我的代码放在帖子里,但是我的新手机不好。如何将结果保存在Python中的数据框的不同列中?

回答

0

我认为你可以使用eq - 比较4位置过滤DataFrameE柱:

df = pd.DataFrame({'A':[1,2,3], 
        'B':[4,5,6], 
        'C':[7,8,9], 
        'D':[1,3,5], 
        'E':[5,3,6], 
        'F':[7,8,9], 
        'G':[1,3,5], 
        'H':[5,3,6], 
        'I':[7,4,3]}) 

print (df) 
    A B C D E F G H I 
0 1 4 7 1 5 7 1 5 7 
1 2 5 8 3 3 8 3 3 4 
2 3 6 9 5 6 9 5 6 3 

print (df.iloc[:,5:].eq(df.iloc[:,4], axis=0)) 
     F  G  H  I 
0 False False True False 
1 False True True False 
2 False False True False 

如果位置需要多个柱4使用mul

print (df.iloc[:,5:].mul(df.iloc[:,4], axis=0)) 
    F G H I 
0 35 5 25 35 
1 24 9 9 12 
2 54 30 36 18 

或者如果需要多个通过移动列:

print (df.iloc[:,4:].mul(df.iloc[:,5:], axis=0, fill_value=1)) 
    E F G H I 
0 5.0 49 1 25 49 
1 3.0 64 9 9 16 
2 6.0 81 25 36 9 
相关问题