我有以下代碼
import pandas as pd
import numpy as np
df = pd.DataFrame({"A":[12, 4, 5, 3, 1],"B":[7, 2, 54, 3, None],"C":[20, 16, 11, 3, 8],"D":[14, 3, None, 2, 6]})
df['A1'] = np.where(df['A'] > 10, 10, np.where(df['A'] < 3, 3, df['A']))
雖然這沒關系,但我想dataframe使用第一行的鏈式規則創建最終(即第二行代碼)。我想實作這一點以提高可讀性。
你能幫忙我怎么能做到這一點?
uj5u.com熱心網友回復:
您可以在此處使用剪輯:
df.assign(A1=df['A'].clip(upper=10,lower=3))
A B C D A1
0 12 7.0 20 14.0 10
1 4 2.0 16 3.0 4
2 5 54.0 11 NaN 5
3 3 3.0 3 2.0 3
4 1 NaN 8 6.0 3
如果您真的需要在一行中執行此操作(請注意,我覺得這不可讀)
pd.DataFrame({"A":[12, 4, 5, 3, 1],
"B":[7, 2, 54, 3, None],
"C":[20, 16, 11, 3, 8],
"D":[14, 3, None, 2, 6]}).assign(A1=lambda x:x['A'].clip(upper=10,lower=3))
uj5u.com熱心網友回復:
您可以像下面這樣使用 np.select() 。它使條件和選擇非常易讀。
conditions = [df['A'] > 10,
df['A'] < 3]
choices = [10,3]
df['A2'] = np.select(conditions, choices, default = df['A'])
print(df)
A B C D A1
0 12 7.0 20 14.0 10
1 4 2.0 16 3.0 4
2 5 54.0 11 NaN 5
3 3 3.0 3 2.0 3
4 1 NaN 8 6.0 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455774.html
標籤:python-3.x 熊猫 数据框
上一篇:通過cols合并/連接兩個資料幀
下一篇:將一列一分為二:串列中的資料框
