在熊猫数据框中使用多列作为索引

时间:2019-03-14 09:45:23

标签: python pandas

很抱歉,我的问题是基本问题还是已经回答,我对编程还是很陌生。

我正在尝试编写python脚本来自动处理一堆.csv文件,并根据ID所在的列将数据写入不同的列

例如,

import pandas as pd
df = pd.DataFrame({'ID1': ["A12", "A13", "A14"],'Data1': [0,0,0], 
               'ID2': ["B12", "B13", "B14"],'Data2': [0,0,0],})

给予

      ID1  Data1  ID2  Data2
0  A12      0  B12      0
1  A13      0  B13      0
2  A14      0  B14      0

让我说我有关于B14的数据,我希望该数据显示在Data2中与B14相同的行中。使用df.iloc是不可能的,因为我有大约400个数据集,分布在8列以上。

我想要的结果是

      ID1  Data1  ID2  Data2
0  A12      0  B12      0
1  A13      0  B13      0
2  A14      0  B14      somedata

2 个答案:

答案 0 :(得分:1)

有点不确定您在这里问什么。如果要将数据插入ID2为B14的Data2列的数据框中,可以这样:

df.loc[df.ID2 == "B14", "Data2"] = 1

答案 1 :(得分:0)

import pandas as pd
df = pd.DataFrame({'ID1': ["A12", "A13", "A14"],'Data1': [0,0,0], 
           'ID2': ["B12", "B13", "B14"],'Data2': [0,0,0],})

DataFrame现在是:

   ID1  Data1  ID2  Data2
0  A12      0  B12      0
1  A13      0  B13      0
2  A14      0  B14      0

添加多级索引:

df.set_index(['ID1', 'ID2'], inplace=True)

DataFrame现在是:

         Data1  Data2
ID1 ID2              
A12 B12      0      0
A13 B13      0      0
A14 B14      0      0

查询二级索引

df2.xs('B14', level=1)

结果:

     Data1  Data2
ID1              
A14      0      0