我有以下数据框:
df = pd.DataFrame([[1, 5, 1], [2, 6, 2], [3, 7, 3], [4, 8, 4]])
df2 = pd.DataFrame([[1, 5, 10], [3, 6, 2], [1, 9, 3], [4, 8, 4]])
我需要检查它们的减法(df - df2):
df_sub = pd.DataFrame([[0, 0, -9], [-1, 0, 0], [2, -2, 0], [0, 0, 0]])
当有负值时,我需要保留它们的坐标并在第一个数据框中替换为 0:
df = pd.DataFrame([[1, 5, 0], [0, 6, 2], [3, 0, 3], [4, 8, 4]])
我想到了一个这样的功能:
def find_negative(df):
coordinates = []
for column in df.columns:
for index in df.index:
if df.loc[index, column] < 0:
coordinates.append((index, column))
return coordinates
但是我怎样才能将它应用到第一个数据框呢?
您可以减去并df2
使用:df
df.where
new_df = df.where(df - df2 >= 0, 0)
输出:
>>> new_df
0 1 2
0 1 5 0
1 0 6 2
2 3 0 3
3 4 8 4
>>> new_df.to_numpy().tolist()
[[1, 5, 0], [0, 6, 2], [3, 0, 3], [4, 8, 4]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句