在Pandas中,有一种简单的方法只在特定类型的列上应用函数吗?
在一个示例中,我需要使用控制字符预处理数据帧,然后再将其保存到csv文件中。
我目前正在执行以下操作:
df[string_column] = df[string_column].apply(
lambda x:
x.encode('ascii', errors='ignore').replace('\n',' ').replace('\t', ' '))
但这需要知道哪些列有字符串。
仅在某种类型的列上应用函数的简单方法是什么?
答案 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或其他任何内容一起使用。