我怎樣才能顯示列的實際值,如果結果isnumeric=False和fill的NaN基礎上,SKU
DF
SKU SKU2
SKU_ABC False
0 NaN
0 NaN
0 NaN
SKU_ACD False
0 NaN
0 NaN
預期結果
SKU SKU2
SKU_ABC SKU_ABC
0 SKU_ABC
0 SKU_ABC
0 SKU_ABC
SKU_ACD SKU_ACD
0 SKU_ACD
0 SKU_ACD
腳本(僅顯示 True/False)
df2['SKU2'] = df2['SKU'].str.isnumeric()
我試過這個
df2['SKU2'] = df[~df2['SKU'].str.isnumeric()]
但我收到了這個錯誤
TypeError: bad operand type for unary ~: 'float'
uj5u.com熱心網友回復:
我使用這個解決方案Pandas 有沒有辦法使用前一行值
使用 for 回圈:
df['SKU'] = df['SKU'].fillna('0')
df['SKU2'] = df['SKU'].astype(str).str.isnumeric().fillna(False)
for i in range(len(df)):
if df.loc[i, 'SKU2']:
df.loc[i, 'SKU2'] = df.loc[i-1, 'SKU2']
else:
df.loc[i, 'SKU2'] = df.loc[i, 'SKU']
據我所知,這里的問題是,isnumeric讓我們嘗試
使用 np.where 的其他選項繞過它:df['SKU'].str.contains('SKU')
df['SKU2'] = np.where(df['SKU'].astype(str).fillna('0').str.contains('SKU'),df.SKU, None)
df['SKU2'] = df['SKU2'].ffill()
如果它總是“0”:df['SKU']=='0'
df['SKU2'] = np.where(df['SKU'].astype(str).fillna('0')=='0', None,df.SKU)
df['SKU2'] = df['SKU2'].ffill()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/334598.html
上一篇:如果熊貓資料框中的條件不滿足,則將列中的數字替換為其他數字
下一篇:更新多索引資料框中的值
