我有一個包含 3 列的 Pandas 資料框,我計劃創建一個第 4 列,它是這些值的匯編。業務規則規定,如果一列不是 NULL,那么對于給定的行,其他列都是 NULL。但是,我想插入支票。
下面的斷言足以確認業務規則。但是,這不是很可擴展。什么是更好的寫法,以便可以添加任意數量的變數?
import pandas as pd
import numpy as np
d = {
"var1": [np.nan, 2, 3, np.nan, np.nan],
"var2": [np.nan, np.nan, np.nan, 1, 1],
"var3": [1, np.nan, np.nan, np.nan, np.nan]
}
df = pd.DataFrame(data=d)
print(df)
var1 var2 var3
0 NaN NaN 1.0
1 2.0 NaN NaN
2 3.0 NaN NaN
3 NaN 1.0 NaN
4 NaN 1.0 NaN
# Confirm only one column has a value in each row
assert df.loc[~(df.var1.isna()) & (~(df.var2.isna()) | ~(df.var3.isna()))].empty
assert df.loc[~(df.var2.isna()) & (~(df.var1.isna()) | ~(df.var3.isna()))].empty
# This third assert isn't really needed
assert df.loc[~(df.var3.isna()) & (~(df.var2.isna()) | ~(df.var1.isna()))].empty
uj5u.com熱心網友回復:
如果您只想檢查一個非 nan:
assert df.notna().sum(axis=1).eq(1).all()
如果您想查詢最多一個非楠,變eq來le為小于或等于
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349889.html
