df.apply - 仅限特定类型的列

时间:2014-05-14 22:42:17

标签: python pandas

在Pandas中,有一种简单的方法只在特定类型的列上应用函数吗?

在一个示例中,我需要使用控制字符预处理数据帧,然后再将其保存到csv文件中。

我目前正在执行以下操作:

df[string_column] = df[string_column].apply(
                     lambda x: 
                     x.encode('ascii', errors='ignore').replace('\n',' ').replace('\t', ' '))

但这需要知道哪些列有字符串。

仅在某种类型的列上应用函数的简单方法是什么?

1 个答案:

答案 0 :(得分:1)

好吧,我想我会根据dtype列出字符串列(它们会有object dtype)。如下所示:

>>> df = pd.read_csv(StringIO(data),header=True)
>>> print df

   A  B   C   D
0  1  a   6  ff
1  2  b   7  cc
2  3  c   8  dd
3  4  d   9  ee
4  5  e  10  gg

>>> print df.dtypes

A     int64
B    object
C     int64
D    object

然后你可以得到一个对象/ str列的列表,如下所示:

>>> print df.dtypes[df.dtypes == 'object'].index.tolist()

['B', 'D']

现在您可以将该列表与apply或其他任何内容一起使用。