我想解决一个我认为应该是相当简单的问题。我想拍一个熊猫系列:
'a'
10
'b'
'someword'
'c'
20
'd'
'sometext'
30
,只将数字值乘以2,不包括字符串。
然而,当我尝试为我的系列编写掩码时:
ser[dtype(ser) == int]
函数dtype(ser)将只返回一个值(在本例中为False),而不是预期的布尔掩码。我知道当对数据帧做同样的事情时,我可以使用df.select_dtypes。级数有类似的函数吗?
请注意,我是专门寻找"simple/pandorable"解决方案。我知道我也可以遍历该序列,但我想找到一种方法来为该序列编写一个简单的掩码。
可以使用lambda函数代替掩码,该函数只将整数相乘,而将其他dtype保留原样:
>>> import pandas as pd
>>> ser = pd.Series(['a', 10,'b', 'someword', 'c', 20, 'd', 'sometext', 30])
样本系列:
0 a
1 10
2 b
3 someword
4 c
5 20
6 d
7 sometext
8 30
dtype: object
>>> ser = ser.apply(lambda x: x*2 if isinstance(x, int) else x)
输出:
0 a
1 20
2 b
3 someword
4 c
5 40
6 d
7 sometext
8 60
dtype: object
如果你想使用遮罩,你可以这样做:
isnumeric = ser.astype(str).str.isnumeric()
ser[isnumeric] = ser[isnumeric]*2
ser
输出:
0 a
1 20
2 b
3 someword
4 c
5 40
6 d
7 sometext
8 60
dtype: object