Python:introspection,我如何验证系列中的值是字符串?

时间:2015-10-17 17:38:18

标签: python pandas

previous question的基础上,我被告知pd.cut会产生字符串。例如:

agepreg_cuts = pd.cut(df['agepreg'],[0,20,25,30,pd.np.inf], right=False)
agepreg_cuts[0:10]

上面的代码会给我以下值

0    [30, inf)
1    [30, inf)
2      [0, 20)
3      [0, 20)
4      [0, 20)
5     [25, 30)
6     [25, 30)
7    [30, inf)
8     [25, 30)
9    [30, inf)
Name: agepreg, dtype: category
Categories (4, object): [[0, 20) < [20, 25) < [25, 30) < [30, inf)]

我被告知这些值(例如[25, 30))是字符串,因此我必须解析它以获取开始值和结束值。我如何验证这些确实是字符串?

作为参考,我使用的数据来自nsfg。免费图书thinkstats2包含github上的随附代码和数据。

来自&#39;代码&#39;目录,您可以运行以下行来加载数据帧。

import nsfg
df = nsfg.ReadFemPreg()
df

2 个答案:

答案 0 :(得分:0)

这应该有效:

isinstance(agepreg_cuts, str)

答案 1 :(得分:0)

您可以将type函数应用于Series值:

In [11]: agepreg_cuts.apply(type)
Out[11]:
0    <class 'str'>
1    <class 'str'>
2    <class 'str'>
3    <class 'str'>
4    <class 'str'>
5    <class 'str'>
6    <class 'str'>
7    <class 'str'>
8    <class 'str'>
9    <class 'str'>
dtype: object

In [12]: agepreg_cuts.apply(type).value_counts()
Out[12]:
<class 'str'>    10
dtype: int64