2015-07-20 8 views
13

मैं मुद्रा के साथ एक df है:फ्लोट करने के लिए मुद्रा में कनवर्ट (और कोष्ठक नकारात्मक मात्रा से संकेत मिलता है)

df = pd.DataFrame({'Currency':['$1.00','$2,000.00','(3,000.00)']}) 

    Currency 
0  $1.00 
1 $2,000.00 
2 (3,000.00) 

मैं 'मुद्रा' dtype फ्लोट करने के लिए परिवर्तित करना चाहते हैं, लेकिन मैं कोष्ठकों तार के साथ मुसीबत (चल रहा है जो ऋणात्मक राशि इंगित करें)। यह मेरे वर्तमान कोड है:

df[['Currency']] = df[['Currency']].replace('[\$,]','',regex=True).astype(float) 

जो एक त्रुटि पैदा करता है:

ValueError: could not convert string to float: (3000.00) 

मैं क्या चाहता हूँ के रूप में dtype नाव है:

 Currency 
0  1.00 
1 2000.00 
2 -3000.00 

उत्तर

25

बस मौजूदा आदेश को ) जोड़ने के लिए, और उसके बाद संख्या को कोष्ठक में संख्या बनाने के लिए ( से - परिवर्तित करें। फिर फ्लोट में कनवर्ट करें।

(df['Currency'].replace('[\$,)]','', regex=True) 
       .replace('[(]','-', regex=True).astype(float)) 

    Currency 
0   1 
1  2000 
2  -3000 
+1

@George यहां आप इसे जॉनई से प्राप्त करते हैं। तेज़ महान –

0

इस है आप अपने DataFrame खासकर यदि आप कॉलम औसत DataFrame है जो की बहुत सारी करने के लिए जोड़ा है, ताकि आप उस पर काम कर सकते हैं सुनिश्चित करना चाहते हैं, तो

df['Currency']=(df['Currency'].replace('[\$,)]','', regex=True) .replace('[(]','-', regex=True).astype(float))

संबंधित मुद्दे