使用 Pandas 创建唯一列表

Creating a unique list using Pandas

我有一个包含超过 1000 列数据的 xlsx 文件。我想首先解析数据文件中的每一列(可以包含数字和字母),然后根据解析的数据创建一个唯一列表。

我是个菜鸟,我试过 "for" 和 "do while" 循环,但都不适合我。

到目前为止我有:

    import pandas as pd
    workbook = pd.read_excel('C:\Python27\Scripts\Data.xlsx')
    worksheet = workbook.sheetname='Data'

    for col in range(worksheet[0], worksheet[1300]):
        print(col)

我想我需要追加数据并可能写入文本文件然后从文本文件创建一个唯一列表 - 我可以做第二部分它只是将它放入我遇到问题的文本文件.

谢谢

您可以通过切片和使用步骤参数来迭代您的列,即 df.ix[:, ::2]

In [35]:
df = pd.DataFrame({'a':1, 'b':[1,2,3,4,5], 'c':[2,3,4,5,6], 'd':0,'e':np.random.randn(5)})
df

Out[35]:
   a  b  c  d         e
0  1  1  2  0 -0.352310
1  1  2  3  0  1.189140
2  1  3  4  0 -1.470507
3  1  4  5  0  0.742709
4  1  5  6  0 -2.798007

这里我们每第 2 列步进一次:

In [37]:
df.ix[:,::2]

Out[37]:
   a  c         e
0  1  2 -0.352310
1  1  3  1.189140
2  1  4 -1.470507
3  1  5  0.742709
4  1  6 -2.798007

然后我们可以在整个 df 上调用 np.unique 以获得所有唯一值的单个数组:

In [36]:
np.unique(df.ix[:,::2])

Out[36]:
array([-2.79800676, -1.47050675, -0.35231005,  0.74270934,  1.        ,
        1.18914011,  2.        ,  3.        ,  4.        ,  5.        ,  6.        ])