0
當試圖讀取一些列使用它們的索引從一個表格文件與熊貓read_csv
看起來usecols
和names
彼此不同步。pandas read_csv usecols和名稱不同步
例如,具有文件test.csv
:
FOO A -46450.494736 0.0728830817231
FOO A -46339.7126846 0.0695018062805
FOO A -46322.4942905 0.0866205763556
FOO B -46473.3117983 0.0481618121947
FOO B -46537.6827055 0.0436893868921
FOO B -46467.2102205 0.0485001911304
BAR C -33424.1224914 6.7981041851
BAR C -33461.4101485 7.40607068177
BAR C -33404.6396495 4.72117502707
,並試圖讀取3列由指數不保留原來的順序:
cols = [1, 2, 0]
names = ['X', 'Y', 'Z']
df = pd.read_csv(
'test.csv', sep='\t',
header=None,
index_col=None,
usecols=cols, names=names)
我得到了以下數據框:
X Y Z
0 FOO A -46450.494736
1 FOO A -46339.712685
2 FOO A -46322.494290
3 FOO B -46473.311798
4 FOO B -46537.682706
5 FOO B -46467.210220
6 BAR C -33424.122491
7 BAR C -33461.410148
8 BAR C -33404.639650
而我期望列Z
有FOO
和BAR
,像這樣:
Z X Y
0 FOO A -46450.494736
1 FOO A -46339.712685
2 FOO A -46322.494290
3 FOO B -46473.311798
4 FOO B -46537.682706
5 FOO B -46467.210220
6 BAR C -33424.122491
7 BAR C -33461.410148
8 BAR C -33404.639650
我知道大熊貓存儲dataframes作爲字典所以列的順序可能與要求與usecols不同,但這裏的問題是,使用usecols與索引和名稱沒有意義。
我真的需要通過它們的索引來讀取列,然後爲它們分配名稱。有沒有解決方法?
是的,的確如此。這個文檔可能會更清晰。我發現的解決方案是在讀取文件時不使用'names',使用相同的'cols'索引對df進行重新排序,並在最後重命名列。例如:'df = pd.read_csv(...,usecols = cols)[cols]; df.columns = names' – PedroA