2016-09-23 74 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