![](/img/trans.png)
[英]How to create a new column in pandas and add value to that new column based on the conditional value from the existing column?
[英]create new column from conditional statement without mask pandas
我正在尋找一種更好的方法來做到以下幾點:
A
TRDNumber
ALB2008081610 430
ALB200808167 0
ALB200808168 190
使用條件語句基於另一列中的值創建新列
A B
TRDNumber
ALB2008081610 430 z
ALB200808167 0 x
ALB200808168 190 y
以下代碼有效但我知道必須有更好的方法來執行此操作。
mask = df['A'] == 0
df20 = df[mask]
df20['B'] = 'x'
df20
mask2 = ((df.A != 0) & (df.B <= 200) )
df21 = df[mask2]
df21['B'] = 'y'
df21
pieces = [df20,df21]
pd.concat(pieces)
我想你想做以下事情:
#%%
df = pd.DataFrame()
df['A'] = pd.Series([430,0,190], index=['ALB2008081610', 'ALB200808167', 'ALB200808168'])
print(df)
#%%
df['B'] = None
print(df)
#%%
df.loc[(df.A==0), 'B'] = 'x'
print(df)
#%%
df.loc[(df.A!=0) & (df.A<=200), 'B'] = 'y'
print(df)
有關索引的說明可以在這里找到: http : //pandas.pydata.org/pandas-docs/stable/indexing.html
下次提示:提供用於創建數據幀的代碼。 然后我們可以直接使用您正在使用的相同數據幀。
您可以創建函數並將其apply
數據集:
>>> def foo(x):
... if x['A'] == 0:
... return 'x'
... elif x['A'] < 200:
... return 'y'
... else:
... return 'z'
...
>>> df['B'] = df.apply(foo, axis=1)
>>> df
A B
TRDNumber
ALB2008081610 430 z
ALB200808167 0 x
ALB200808168 190 y
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.