我有一个pandas数据框,我希望在一些列中只增加大于零的值,并将其递增一个固定值(例如0.001)。
df=pd.DataFrame({'a': ['abc', 'abc', 'abc', 'abc'], 'b': [2,np.nan, 0, 6], 'c': [1, 0, 2, 0]})
a b c
0 abc 2.0 1
1 abc NaN 0
2 abc 0.0 2
3 abc 6.0 0
所以我尝试了这个:
df[df.loc[:,['b', 'c']]>0]+=1
TypeError: Cannot do inplace boolean setting on mixed-types with a non np.nan value
然而,由于第一列具有对象数据类型,因此我无法像您在错误中看到的那样执行此操作。期望的输出应该是:
a b c
0 abc 2.001 1.001
1 abc NaN 0
2 abc 0.0 2.001
3 abc 6.001 0
有没有一种方法可以在不分别循环每个列的情况下完成这种操作?
我相信我只是缺少一个简单的方法,但似乎找不到一个示例。
select_dtypes
,我借鉴了它 :-) - BENYdf.add()
更快。 - Anton vBR