ฉันมี DataFrame ที่มีตัวเลขเป็นสตริงพร้อมเครื่องหมายจุลภาคสำหรับเครื่องหมายหลักพัน ฉันต้องแปลงมันเป็นลอย
a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)
ฉันเดาว่าฉันต้องใช้ locale.atof แน่นอน
df[0].apply(locale.atof)
ทำงานได้ตามที่คาดไว้ ฉันได้รับชุดลอย
แต่เมื่อฉันใช้กับ DataFrame ฉันได้รับข้อผิดพลาด
df.apply(locale.atof)
TypeError: ("ไม่สามารถแปลงชุดข้อมูลเป็น", u'occurred ที่ดัชนี 0 ')
และ
df[0:1].apply(locale.atof)
ให้ข้อผิดพลาดอื่น:
ValueError: ('ตัวอักษรไม่ถูกต้องสำหรับ float (): 1,200', คุณเกิดขึ้นที่ดัชนี 0 ')
ดังนั้นฉันจะแปลงDataFrame
สตริงนี้เป็น DataFrame of float ได้อย่างไร
apply
บน DataFrame ส่งทั้งคอลัมน์ไปยังฟังก์ชันเป็นชุด (ในกรณีนี้locale.atof
ซึ่งคาดว่าจะมีสตริง) หากคุณใช้applymap
วิธีการที่ @AndyHayden ทำในคำตอบด้านล่างนี้คุณควรจะทำได้ดี