2017-03-08 289 views
6

我遵循以下過程:In Python, how do I convert all of the items in a list to floats?,因爲我的Dataframe的每一列都是list,而不是floats我選擇將所有值更改爲stringsPython - 將數據框中的所有項目都轉換爲字符串

df = [str(i) for i in df]

但這種失敗。

它只是刪除除列名的第一行以外的所有數據。

然後,嘗試df = [str(i) for i in df.values]導致將整個數據框更改爲一個大的列表,但是這太多地混淆了數據,無法達到我的腳本的目標,即將數據框導出到Oracle表。

有沒有辦法將我的Dataframe中所有不是字符串的項目轉換爲字符串?

回答

7

您可以使用applymap方法:

df = df.applymap(str) 
+0

這工作絕對完美,並修復了我的整個代碼。謝謝你,謝謝 – theprowler

+0

不客氣。很高興幫助! – Psidom

+0

我不知道你的數據框有多大,但似乎astype速度要快得多。看到我的答案:)。 – Skirrebattie

6

您可以使用此:

df = df.astype(str) 

出於好奇,我決定去看看是否有在接受的解決方案和礦山之間的效率的差異。

結果如下:

例如DF: DF = pd.DataFrame([列表(範圍(1000))],指數= [0])

測試df.astype

%timeit df.astype(str) 
>> 100 loops, best of 3: 2.18 ms per loop 

測試df.applymap

%timeit df.applymap(str) 
1 loops, best of 3: 245 ms per loop 

看來df.astype是相當快很多:)