【发布时间】:2018-11-06 16:46:37
【问题描述】:
我有一个带有两个变量的熊猫 df:
id name
011 Peter Parker
022 Warners Brother
101 Bruce Wayne
目前两者都是对象类型。
假设我想通过一些条件过滤来创建更小的数据帧
df_small = df.loc[df['id']=='011']
df_small2 = df.loc[df['name']=='Peter Parker']
我已经想到并看到people 将对象类型列转换为其他特定数据类型。我的问题是,如果我已经可以根据字符串比较(如上所述)过滤它们,我是否需要这样做?将它们转换为特定的字符串或 int/float 类型有什么好处?
【问题讨论】:
-
对于您的情况不需要转换,
-
转换为数字类型的成本之一是
'011'将转换为11。对于'0011'与'011'不同的情况,可能会出现问题 -
这取决于你想用 df 做什么。例如,如果您要进行许多不同的 int 比较,最好只一次转换为 int,而不是 pandas 必须在每个函数调用上进行内部转换。
-
没有“字符串类型”的熊猫列。这只是一个
object列。 -
这些方法只对字符串可用。
x.str.contains(pat)基本上只是pat in x(按行)。例如,'e' in 'hello'将起作用,而'e' in 4将抛出TypeError,因为in不是数字类型的有效方法。
标签: python pandas dataframe types