2016-04-23 63 views
0

第1部分從字符串部分列

與此類似question刪除不需要的部分,但是我有一系列柱的側向承載力命名爲A - J所有這些都到位的NaN的連字符的系列數值(見下面的例子)。我如何替換所有這些數據,而不是按照答案中的說明一次遍歷每一列。

Sample column A 
1000 
2000 
3000 
- 
1000 

第2部分

是否有使用正則表達式來刪除所有的方式 ' - ', '', ''從數據框?

+1

顯示數據樣本將有助於理解您想要的內容 – Nobi

+0

試試這個:'df.replace(r'[\ s \ - ,\。] +','',regex = True,inplace = True) '或者只是使用[pd.to_numeric()](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_numeric.html#pandas.to_numeric) – MaxU

回答

1

零件編號1

您可以定義 ' - ' 在閱讀時要NaN值數據到您的DataFrame。更具體地說,在pd.read_csv()呼叫中使用na_values

見文檔here

部分#2

正如MaxU剛纔所說,你可以使用.replace()這樣的:

df.replace(r'[\s\-,\.]+', r'', regex=True, inplace=True) 

注意,這不會有任何對非字符串的影響。

希望這會有所幫助!

+0

謝謝,這是一個很好的解決方案 –

+0

如果這有助於您接受答案或者對其進行投票,或者兩者兼而有之。祝你的項目好運。 – Thanos

0

您可以遍歷列。

所選列:

>>> df = pd.DataFrame({'a': ['a-b', 'c-d'], 'b': ['x-y', 'z-z'], 'c': ['x-y', 'z-z']}) 
>>> df 
    a b c 
0 a-b x-y x-y 
1 c-d z-z z-z 
>>> for col_name in 'ab': 
     df[col_name] = df[col_name].str.replace('-', '0') 
>>> df 
    a b c 
0 a0b x0y x-y 
1 c0d z0z z-z 

所有列:

>>> df = pd.DataFrame({'a': ['a-b', 'c-d'], 'b': ['x-y', 'z-z'], 'c': ['x-y', 'z-z']}) 

>>> for col_name in df.columns: 
     df[col_name] = df[col_name].str.replace('-', '0') 
>>> df 
    a b c 
0 a0b x0y x0y 
1 c0d z0z z0z