2016-09-23 50 views
1

我的DataFrame有太多的列要单独在所有列中手工输入。因此,我试图快速循环,并摆脱大量的美元符号和逗号。这是代码,我到目前为止有:尝试循环DataFrame中的列并剥离美元符号

for column in df1: 
    df1[column] = df1[column].str.lstrip('$') 

,我得到的错误:

AttributeError的:只能使用名为.str访问字符串值,其使用在熊猫

np.object_ D型

回答

3

可以使用select_dtypes只过滤的STR列:

for col in df.select_dtypes([np.object]): 
    df[col] = df[col].str.lstrip('$') 

例子:

In [309]: 
df = pd.DataFrame({'int':np.arange(3), 'float':[0.1,2.3,4.0], 'str':['$d', 'a$', 'asd']}) 
df 

Out[309]: 
    float int str 
0 0.1 0 $d 
1 2.3 1 a$ 
2 4.0 2 asd 

In [310]: 
for col in df.select_dtypes([np.object]): 
    df[col] = df[col].str.lstrip('$') 
df 

Out[310]: 
    float int str 
0 0.1 0 d 
1 2.3 1 a$ 
2 4.0 2 asd 
+0

完美的工作,我会使用相同的方法来删除千位上的逗号只有.strip? – Mark

+1

如果你使用'read_csv'加载了数据,那么它有'thousand' arg:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html#pandas.read_csv,所以你可以做' df = pd.read_csv(file,thousands =',')'否则是你可以做你的建议,但是你需要将列转换为'df [col] = df [col] .str.replace(', ”, '')。astype(INT)' – EdChum