只是在資料幀串列上運行一個簡單的 for 回圈,但是嘗試添加一個 IF 子句......并且它不斷出錯。
df_list = [df1, df2, df3]
for df in df_list:
if df in [df1, df2]:
x = 1
else:
x = 2
.
.
.
ValueError: Can only compare identically-labeled DataFrame objects
以上是我正在嘗試的簡化版本。誰能告訴我為什么這不起作用并修復?
uj5u.com熱心網友回復:
您可以使用DataFrame.equalswithany代替:
df_list = [df1, df2, df3]
for df in df_list:
if any(df.equals(y) for y in [df1, df2]):
x = 1
else:
x = 2
uj5u.com熱心網友回復:
您可以使用更好的容器并通過標簽參考它們。
具有物件型別的大型 DataFrame 的相等性檢查可能會變慢,>> 秒,但需要 ~ns 來檢查標簽是否在串列中。
dfs = {'df1': df1, 'df2': df2, 'df3': df3}
for label, df in dfs.items():
if label in ['df1', 'df2']:
x = 1
else:
x = 2
uj5u.com熱心網友回復:
您需要使用 df.equals()
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.equals.html
df_list = [df1, df2, df3]
for df in df_list:
if df.equals(df1) or df.equals(df2):
# blah blah
uj5u.com熱心網友回復:
以下鏈接可能會有所幫助: Pandas“只能比較標記相同的 DataFrame 物件”錯誤
據此,被比較的資料幀==應該具有相同的列和索引,否則會出錯。
或者,您可以使用方法比較資料幀dataframe.equals。請參考以下檔案:https ://pandas.pydata.org/docs/reference/api/pandas.DataFrame.equals.html
uj5u.com熱心網友回復:
不要.equals()在這里使用!
這是不必要的并且會減慢您的程式,請id()改用:
df_list = [df1, df2, df3]
for df in df_list:
if id(df) in [id(df1), id(df2)]:
x = 1
else:
x = 2
因為在這里您只需要比較身份,而不是值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453524.html
上一篇:獲取以逗號分隔的串列物件
