我想解决一个我认为应该相当简单的问题。我想要拍 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/