查找包含数据的单元格并将其用作数据框中的索引

时间:2016-10-18 23:08:51

标签: python pandas

我正在阅读一个excel文件,但出于这个问题的目的,我将提供一个我的数据帧的示例。 我有dataframe这样:

df = pd.DataFrame([
        ['Texas 1', '111', '222', '333'],
        ['Texas 1', '444', '555', '666'],
        ['Texas 2', '777','888','999']
    ])
df[2] = df[2].replace('222', '')


          0    1    2    3
a   Texas 1  111       333
b   Texas 1  444  555  666
c   Texas 2  777  888  999

我希望能够根据非空白的第一行的值定义多索引。 所以像这样:

      0     1    3
Texas 1   111  333 444  555  666
Texas 2   111  333 777  888  999

问题是行a中的值并不总是在同一列中,因此我需要一种方法来查找哪些列在第一行中具有值并使用该列号作为索引。到目前为止,我像这样阅读我的excel文件:

df1 = pd.read_excel('excel.XLS', index_col=[1,11,24,37])

我一直在寻找一种方法来读取不是NaN且位于row a的单元格,并找到要存储在列表中的列号,并将其用于我的{{ 1}}。但我无法弄清楚如何。任何正确方向的指针都会很棒!

1 个答案:

答案 0 :(得分:1)

首先,你说“哪里不是NaN”,而你replace''。 我将''替换为np.nan,然后dropna

df.iloc[0].replace('', np.nan).dropna().index

Int64Index([0, 1, 3], dtype='int64')
df[df.iloc[0].replace('', np.nan).dropna().index]

enter image description here