我正在嘗試一些我認為很簡單的事情,但是我不斷收到錯誤,我不知道為什么。
我正在嘗試在新列中為df2. 如果 value is column fromdf2匹配df1“col”中的任何值,則寫“result”,否則寫“no result”。
#Create a series from df column
series_from_df = df1['Col']
df2['new_col'] = 'result' if df2['Col1'].isin(series_from_df) else 'Not result'
以上給我一個錯誤:
(<class 'ValueError'>, ValueError('Series的真值不明確。使用a.empty, a.bool(), a.item(), a.any() or a.all()。' ), <traceback object at 0x7f9081a28f80>)
然后我嘗試以下為 series_from_df 添加方形制動器
#Create a series from df column
series_from_df = df1['Col']
df2['new_col'] = 'result' if df2['Col1'].isin([series_from_df]) else 'Not result'
我得到與以前相同的錯誤。
我錯過了什么?
uj5u.com熱心網友回復:
df2['Col1'].isin(df1['Col1'])是一個布爾系列,但您試圖將其用作 中的條件if,它期望一個真值。您可以使用numpy.where創建的系列isin作為條件:
df2['new_col'] = np.where(df2['Col1'].isin(df1['Col1']), 'result', 'Not result')
uj5u.com熱心網友回復:
您還可以使用map來替換布林值:
df2['new_col'] = \
df2['Col1'].isin(df1['Col']).replace({True: 'result', False: 'Not Result'})
print(df2)
# Output
Col1 new_col
0 1 result
1 2 result
2 3 Not Result
3 4 result
4 5 result
設定:
df1 = pd.DataFrame({'Col': [1, 2, 4, 5]})
df2 = pd.DataFrame({'Col1': [1, 2, 3, 4, 5]})
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435570.html
