Python 将CSV加载到多索引数据帧

Python 将CSV加载到多索引数据帧,python,csv,numpy,pandas,Python,Csv,Numpy,Pandas,我有一个719mb的CSV文件,看起来像: from, to, dep, freq, arr, code, mode (header row) RGBOXFD,RGBPADTON,127,0,27,99999,2 RGBOXFD,RGBPADTON,127,0,33,99999,2 RGBOXFD,RGBRDLEY,127,0,1425,99999,2 RGBOXFD,RGBCHOLSEY,127,0,52,99999,2 RGBOXFD,RGBMDNHEAD,127,0,91,99999,

我有一个719mb的CSV文件,看起来像:

from, to, dep, freq, arr, code, mode   (header row)
RGBOXFD,RGBPADTON,127,0,27,99999,2
RGBOXFD,RGBPADTON,127,0,33,99999,2
RGBOXFD,RGBRDLEY,127,0,1425,99999,2
RGBOXFD,RGBCHOLSEY,127,0,52,99999,2
RGBOXFD,RGBMDNHEAD,127,0,91,99999,2
RGBDIDCOTP,RGBPADTON,127,0,46,99999,2
RGBDIDCOTP,RGBPADTON,127,0,3,99999,2
RGBDIDCOTP,RGBCHOLSEY,127,0,61,99999,2
RGBDIDCOTP,RGBRDLEY,127,0,1430,99999,2
RGBDIDCOTP,RGBPADTON,127,0,115,99999,2
and so on... 
我想加载到熊猫数据帧中。现在我知道有一个加载自csv的方法:

 r = pd.DataFrame.from_csv('test_data2.csv')
但我特别希望将其加载为“多索引”数据帧,其中from和to是索引:

因此,最终:

                   dep, freq, arr, code, mode
RGBOXFD RGBPADTON  127     0   27  99999    2
        RGBRDLEY   127     0   33  99999    2
        RGBCHOLSEY 127     0 1425  99999    2
        RGBMDNHEAD 127     0 1525  99999    2
等等。我不知道怎么做?

您可以使用:

其中我使用了
skipinitialspace=True
来消除标题行中那些讨厌的空格。

from_csv()的工作原理类似:

import pandas as pd

df = pd.DataFrame.from_csv(
    'data.txt',
    index_col = [0, 1]
)

print df

--output:--
                        dep   freq   arr   code   mode
from        to                                        
RGBOXFD    RGBPADTON    127      0    27  99999      2
           RGBPADTON    127      0    33  99999      2
           RGBRDLEY     127      0  1425  99999      2
           RGBCHOLSEY   127      0    52  99999      2
           RGBMDNHEAD   127      0    91  99999      2
RGBDIDCOTP RGBPADTON    127      0    46  99999      2
           RGBPADTON    127      0     3  99999      2
           RGBCHOLSEY   127      0    61  99999      2
           RGBRDLEY     127      0  1430  99999      2
           RGBPADTON    127      0   115  99999      2

从这个讨论中,


看起来read_csv()的实现是为了允许您设置更多选项,这使得from_csv()变得多余。

FYI:from_csv已被弃用(它的功能与read_csv相同,但有一些令人惊讶的设置,有时在日期解析方面表现得很奇怪)。from_csv已被弃用,我看不到这一点。你完全正确,熊猫还没有反对它。很抱歉也就是说,我们一直在考虑反对。这也有点奇怪,就像它默认的那样,我想我们一直都是。我在你的链接上阅读了讨论,也阅读了它在上一篇文章中链接到的讨论,这是我在文章中包含的链接。
import pandas as pd

df = pd.DataFrame.from_csv(
    'data.txt',
    index_col = [0, 1]
)

print df

--output:--
                        dep   freq   arr   code   mode
from        to                                        
RGBOXFD    RGBPADTON    127      0    27  99999      2
           RGBPADTON    127      0    33  99999      2
           RGBRDLEY     127      0  1425  99999      2
           RGBCHOLSEY   127      0    52  99999      2
           RGBMDNHEAD   127      0    91  99999      2
RGBDIDCOTP RGBPADTON    127      0    46  99999      2
           RGBPADTON    127      0     3  99999      2
           RGBCHOLSEY   127      0    61  99999      2
           RGBRDLEY     127      0  1430  99999      2
           RGBPADTON    127      0   115  99999      2