如果标题不清楚,我会道歉。我将很快用一个例子来澄清。
我在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
...
这样的事情可能吗?基本上将行拆分为唯一列,并保留值?
答案 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")