如何在熊猫级数中只乘整数



我想解决一个我认为应该是相当简单的问题。我想拍一个熊猫系列:

'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

最新更新