我想以元素方式比較兩個資料幀,以找出資料幀一中的哪些元素小于資料幀二中的元素。
資料幀一:

資料幀二:

在這種情況下,應該回傳的唯一元素True應該是Column 130_x索引 0 和 1 的元素。其余元素應該回傳False。
任何幫助,將不勝感激。
uj5u.com熱心網友回復:
然后你需要改變列名
df1.columns = df2.columns
或者在這里我們使用替換
df1.columns = df1.columns.str.replace('_x','_y')
s = df1.eq(df2).all(1)
s.index[s]
uj5u.com熱心網友回復:
您可以簡單地使用,df1 < df2但您的列名必須相同。
import pandas as pd
from io import StringIO
data1 = StringIO("""
126_x,127_x,128_x,129_x,130_x
0.0,0.04898,0.359184,0.004082,0.134694
0.0,0.04898,0.359184,0.004082,0.134694
""")
data2 = StringIO("""
126_y,127_y,128_y,129_y,130_y
0.0,0.0,0.175439,0.0,0.166667
0.006579,0.0,0.269737,0.0,0.223684
""")
df1 = pd.read_csv(data1)
df2 = pd.read_csv(data2)
# column header needs to be the same
df2.columns = df1.columns
print(df1 < df2)
# 126_x 127_x 128_x 129_x 130_x
# 0 False False False False True
# 1 True False False False True
在這種情況下,應該回傳 True 的唯一元素應該是第 130_x 列上索引 0 和 1 的元素。其余元素應該回傳 False。
這是不正確的,還有另一個單元格(列126_y,第 2 行)是正確的:
0.006579 > 0.0。
uj5u.com熱心網友回復:
您不需要修改資料框。您可以使用底層的 numpy 陣列:
df1.lt(df2.values)
輸出:
126_x 127_x 128_x 129_x 130_x
0 False False False False True
1 True False False False True
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/325892.html
