python - 如何仅将 pandas 系列中的整数相乘

标签 python pandas types series

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

'a'
10 
'b'
'someword' 
'c'
20 
'd'
'sometext'
30 

仅将数值乘以 2,不包括字符串。

但是,当我尝试为我的系列编写蒙版时:

ser[dtype(ser) == int]

函数 dtype(ser) 将仅返回单个值(在本例中为 False),而不是预期的 bool 掩码。我知道在对数据框执行相同操作时我可以使用 df.select_dtypes。系列有类似的功能吗?

请注意,我专门寻找“简单/可潘多拉”的解决方案。我知道我也可以迭代该系列,但我想找到一种方法来为该系列编写一个简单的掩码。

最佳答案

您可以使用 lambda 函数来代替掩码,该函数仅将整数相乘并保留其他数据类型不变:

>>> 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

关于python - 如何仅将 pandas 系列中的整数相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74971199/

相关文章:

Python 3.6 安装失败

python - matplotlib 在 xcode 中用 python 绘图

python - 如何通过将最后一列分配为元组的第二个值来读取csv文件?

python-3.x - 如何使用命名绑定(bind)与 pandas 数据帧中的 cx_Oracle 中的批量插入 (executemany)

C-可移植获取类型对齐

python - Kivy 和 XML RPC

python - 如何从与 django 的约会中找到一个月后?

python - 从数据框中的组中删除在特定列中具有最小值的行

linq - 如何反射(reflect)具有泛型接口(interface)的类型,并获取该泛型类型

haskell - 用相应的符号标记字符串