1
我在.csv文件中有一個時間序列數據集,我想用Pandas處理(使用Canopy)。文件中的列名是字符串和同位素數字的混合。有選擇地替換DataFrame列名
cycles 40 38.02 35.98 P4
0 1 1.1e-8 4.4e-8 7.7e-8 8.8e-7
1 2 2.2e-8 5.5e-8 8.8e-8 8.7e-7
2 3 3.3e-8 6.6e-8 9.9e-8 8.6e-7
我想這個數據幀,看起來像這樣
cycles 40 38 36 P4
0 1 1.1e-8 4.4e-8 7.7e-8 8.8e-7
1 2 2.2e-8 5.5e-8 8.8e-8 8.7e-7
2 3 3.3e-8 6.6e-8 9.9e-8 8.6e-7
該.csv文件不會總是具有完全相同的列名;他們的數字可能會略有不同,從文件到文件。爲了解決這個問題,我已經採樣的列名,並四捨五入的值到最近integer.This是我的代碼看起來像至今:
import pandas as pd
import numpy as np
df = {'cycles':[1,2,3],'40':[1.1e-8,2.2e-8,3.3e-8],'38.02':[4.4e-8,5.5e-8, 6.6e-8],'35.98':[7.7e-8,8.8e-8,9.9e-8,],'P4':[8.8e-7,8.7e-7,8.6e-7]}
df = pd.DataFrame(df, columns=['cycles', '40', '38.02', '35.98', 'P4'])
colHeaders = df.columns.values.tolist()
colHeaders[1:4] = list(map(float, colHeaders[1:4]))
colHeaders[1:4] = list(map(np.around, colHeaders[1:4]))
colHeaders[1:4] = list(map(int, colHeaders[1:4]))
colHeaders = list(map(str, colHeaders))
我試圖df.rename(列= {df.loc [ 1]:colHeaders [0]},...),但我得到這個錯誤:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
我讀過this後還有熊貓0.17文檔,但我無法弄清楚如何使用它來選擇性地替換列名,而不需要我手動分配新列名,如this post。
我是相當新的Python,我從來沒有發佈在StackOverflow之前,所以任何幫助將不勝感激。
謝謝,這是乾淨多了。下一步是用'Xe132'從'40'到'Ar40'和'132',這就是爲什麼我希望用一個新的列名列表覆蓋所有列名的方法。這是更好地處理手動重命名? – Icarus