我有以下問題。我有這個 df:
d = {'id': [1, 1, 2, 2, 3], 'value': [0, 1, 0, 0, 1]}
df = pd.DataFrame(data=d)
我想有一個新列,value如果在任何其他情況下它也是 1,那么它將是 1。查看所需的輸出:
d = {'id': [1, 1, 2, 2, 3], 'value': [0, 1, 0, 0, 1], 'newvalue': [1, 1, 0, 0, 1]}
df = pd.DataFrame(data=d)
請問我該怎么做?
uj5u.com熱心網友回復:
如果需要設定0,1的條件-在這里至少一個1使用GroupBy.transform與GroupBy.any用于面罩和鑄造integers的True, False,以1,0地圖:
df['newvalue'] = df['value'].eq(1).groupby(df['id']).transform('any').astype(int)
選擇:
df['newvalue'] = df['id'].isin(df.loc[df['value'].eq(1), 'id']).astype(int)
或者,如果只有0,1值可以通過每組的最大值簡化新列的解決方案:
df['newvalue'] = df.groupby('id')['value'].transform('max')
print (df)
id value newvalue
0 1 0 1
1 1 1 1
2 2 0 0
3 2 0 0
4 3 1 1
uj5u.com熱心網友回復:
任何一個:
df.assign(newvalue=(df.id==1)|(df.value==1))
或者:
import numpy as np
df['newvalue'] = np.where((df.id==1)|(df.value==1),1,0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/345067.html
標籤:熊猫
