我需要將來自 R2ESL 或 MCL 列的數值(以較小者為準)附加到每行(例如 A、B、C)的新列“較小值”中。
例如,對于引數 A,值為 7 的 MCL 小于值為 10 的 R2ESL。我想將 7 放入新列(較小值)中,但在同一行 (A) 上。
到目前為止,我只能在 for 回圈中使用“追加”來附加限制條件列。
| 引數 | R2ESL | MCL | 限制標準 | 較小的價值 |
|---|---|---|---|---|
| 一種 | 10 | 7 | MCL | 7 |
| 乙 | 100 | 150 | R2ESL | 100 |
| C | 55 | 55 | 平等的 | 55 |
excel_df = pd.read_excel('ESLs_MCL_Comparison_copy.xls')
# Changing data type in columns to float
R2ESL_float = [float(item) for item in R2ESL]
print(R2ESL_float)
MCL_float = [float(item) for item in MCL]
print(MCL_float)
# Comparing the values in each column
result = []
result2 = []
for (R2ESL_float, MCL_float) in zip(R2ESL_float, MCL_float):
if R2ESL_float > MCL_float:
result.append("R2ESL")
# result2.append(param_row_value_R2ESL) <-- Need help here
elif R2ESL_float < MCL_float:
result.append("MCL")
# result2.append(param_row_value_MCL) <-- Need help here
elif R2ESL_float == MCL_float:
result.append("Equal")
# result2.append("param_row_value_MCL_or_R2ESL") <-- Need help here
else:
result.append("null")
# result2.append("null")
excel_df["Limiting Criteria"] = result
# excel_df["Lesser Value"] = result2
print(excel_df)
我是python的新手,才學了幾個星期,所以請解釋清楚。
uj5u.com熱心網友回復:
v1, v2 = df['R2ESL'].values, df['MCL'].values
df['Limiting Criteria'] = np.select([v1==v2, v1<v2, v1>v2], ['equal', 'R2ESL', 'MCL'])
# Determine the lesser value
df['Lesser Value'] = df[['R2ESL', 'MCL']].min(axis=1)
例如(這是從互動式 Python 會話中復制的):
>>> df
param R2ESL MCL
0 A 10 7
1 B 100 150
2 C 55 55
>>> v1, v2 = df['R2ESL'].values, df['MCL'].values
>>> df['Limiting Criteria'] = np.select([v1==v2, v1<v2, v1>v2], ['equal', 'R2ESL', 'MCL'])
>>> df
param R2ESL MCL Limiting Criteria
0 A 10 7 MCL
1 B 100 150 R2ESL
2 C 55 55 equal
>>> df['Lesser Value'] = df[['R2ESL', 'MCL']].min(axis=1)
>>> df
param R2ESL MCL Limiting Criteria Lesser Value
0 A 10 7 MCL 7
1 B 100 150 R2ESL 100
2 C 55 55 equal 55
它能做什么:
對于Limiting Criteria:
.values回傳系列(或資料幀)后面的 numpy 陣列[v1==v2, v1<v2, v1>v2]創建僅包含布林值(所謂的“掩碼”)的三個 numpy 陣列的串列。第一個包含 True,其中v1和中的專案v2相等,否則為 False。第二個包含 True,其中 in 的值v1小于 中的值v2。第三個包含 True,其中 in 的值v1大于v2。np.select接受兩個引數:一個“條件”串列(真正的掩碼)和一個值串列,并將每個條件中的 True 替換為值串列中的相應值
對于Lesser Value:
df[['R2ESL', 'MCL']]基本上選擇原始資料幀的子集資料幀,只有列R2ESL和MCL..min(axis=1)獲取每一行的所有列的最小值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364171.html
