df.apply -- 仅在特定类型的列上

1 投票
1 回答
941 浏览
提问于 2025-04-18 06:36

在Pandas中,有没有简单的方法可以只对特定类型的列应用一个函数?

举个例子,我需要在把一个包含控制字符的数据表保存为csv文件之前,先对它进行预处理。

我现在是这样做的:

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

但是这样做需要我知道哪些列是字符串类型。

有没有简单的方法可以只对某种类型的列应用一个函数呢?

1 个回答

2

我觉得我会根据数据类型(dtype)来列出所有字符串类型的列,因为它们的类型是object。所以可以像下面这样做:

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

然后你可以用类似下面的方式获取所有的字符串列:

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

['B', 'D']

现在你可以用这个列表来做一些操作,比如用apply函数或者其他方法。

撰写回答