我正在嘗試根據行索引替換一個值,并且僅針對資料框中的某些列。
對于列 b 和 c,我想用 , 替換第np.nan1、2 和 3 行的值 1
df = pd.DataFrame(data={'a': ['"dog", "cat"', '"dog"', '"mouse"', '"mouse", "cat", "bird"', '"circle", "square"', '"circle"', '"triangle", "square"', '"circle"'],
'b': [1,1,3,4,5,1,2,3],
'c': [3,4,1,3,2,1,0,0],
'd': ['a','a','b','c','b','c','d','e'],
'id': ['group1','group1','group1','group1', 'group2','group2','group2','group2']})
我正在使用以下行,但它沒有更新到位,如果我嘗試分配它,則僅回傳修改行的子集,而不是原始資料幀的更新版本。
df[df.index.isin([1,2,3])][['b','c']].replace(1, np.nan, inplace=True)
uj5u.com熱心網友回復:
你可以這樣做:
df.loc[1:3, ['b', 'c']] = df.loc[1:3, ['b', 'c']].replace(1, np.nan)
輸出:
>>> df
a b c d id
0 "dog", "cat" 1.0 3.0 a group1
1 "dog" NaN 4.0 a group1
2 "mouse" 3.0 NaN b group1
3 "mouse", "cat", "bird" 4.0 3.0 c group1
4 "circle", "square" 5.0 2.0 b group2
5 "circle" 1.0 1.0 c group2
6 "triangle", "square" 2.0 0.0 d group2
7 "circle" 3.0 0.0 e group2
更動態的版本:
cols = ['b', 'c']
rows = slice(1, 3) # or [1, 2, 3] if you want
df.loc[rows, cols] = df.loc[rows, cols].replace(1, np.nan)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/390618.html
