使用Pandas,如何将行值拆分为单独的列,并使用它们的值?

时间:2015-06-05 01:57:11

标签: python pandas dataframe

如果标题不清楚,我会道歉。我将很快用一个例子来澄清。

我在Pandas中有一个数据框,其中第一列是特定值,例如,一个国家/地区,还有其他行描述该国家/地区与其他国家/地区之间的关系,并且每个行都有一个数字值,表示比例关于这两个国家的良好条件,0到1(浮点)。

以下是一个例子:

COUNTRY1         COUNTRY2         RELATIONSHIP
Germany          Australia        0.8
Germany          Turkey           0.9
Germany          Mexico           0.5
Germany          Australia        0.75
Hungary          Australia        0.4
Hungary          Mongolia         1.0
Australia        Turkey           0.3
Australia        Mexico           0.8
...

我想将其合并到:

COUNTRY         GERMANY         AUSTRALIA         TURKEY         MEXICO ...
Germany            -               0.8              0.9            0.5
Australia         0.75              -               0.3            0.8  
...

这样的事情可能吗?基本上将行拆分为唯一列,并保留值?

2 个答案:

答案 0 :(得分:2)

您可以使用pd.pivot_table

>>> agg = lambda ts: ts.iloc[0] if 1 == len(ts) else tuple(ts)
>>> df.pivot_table(values='RELATIONSHIP',
...                index='COUNTRY1',
...                columns='COUNTRY2',
...                aggfunc=agg).fillna('-')
COUNTRY2     Australia Mexico Mongolia Turkey
COUNTRY1                                     
Australia            -    0.8        -    0.3
Germany    (0.8, 0.75)    0.5        -    0.9
Hungary            0.4      -        1      -

答案 1 :(得分:-1)

pd.pivot应该适合。

pd.pivot(index="COUNTRY1", columns="COUNTRY2", values="RELATIONSHIP")