大熊猫用两个不同的ID来平放数据帧?

时间:2017-03-09 18:50:35

标签: python pandas dataframe

我有两个不同ID的数据框

   global_duns   name  vendor_duns
0      9581091  Name1     53506312
1      9581091  Name2    961273620
2     79735371  Name3     53506312
3     79735371  Name4     79735371
4     79735371  Name5    135962137

您可以看到供应商ID 53506312与两个全局变量duns相关联。

我想把它压成一排。

global1  global2   vendor1  vendor2    vendor3
9581091  79735371  53506312 961273620  135962137

这只是一个假设,一家公司可能拥有x个全局数和多个供应商。

以下是创建数据框的代码。

global_duns = [9581091, 9581091, 79735371, 79735371, 79735371]
duns = [53506312, 961273620, 53506312, 79735371, 135962137]
names = ['Name1',
        'Name2',
        'Name3',
        'Name4',
        'Name5']

df = pd.DataFrame({'global_duns': global_duns, 'vendor_duns': duns, 'name': names})

1 个答案:

答案 0 :(得分:1)

这是使用stack()和Transpose

的一种方法
df1 = pd.DataFrame(df.drop('name', axis = 1).stack().drop_duplicates()).T
df1.columns = df1.columns.tolist()

这给出了

    (0, global_duns)    (0, vendor_duns)    (1, vendor_duns)    (2, global_duns)    (4, vendor_duns)
0   9581091     53506312        961273620       79735371        135962137

当前元组提供了多索引数据帧的两个级别的精确组合。如果您想重命名

df1.columns = ['global1', 'vendor1', 'vendor2', 'global2', 'vendor3']

你会得到

    global1   vendor1   vendor2     global2     vendor3
0   9581091   53506312  961273620   79735371    135962137