重塑一个大熊猫据帧
问题描述:
高效的方式,我有一个数据帧,看起来像这样:重塑一个大熊猫据帧
com_id region_id represent_name
2233 r1 A
2233 r2 B
2233 r4 C
2234 r3 D
2234 r1 E
2235 r1 F
只有四个region_id
可能值。对于每家公司而言,某地区可能会有一名代表。我想是这样的:
com_id region1 region2 region3 region4
2233 A B NaN C
2234 E NaN D NaN
2235 F NaN NaN NaN
我已经试过类似透视表或在大熊猫拆散,但它不是在这种情况下工作。问题是每个公司现在或可能现在都有一个区域的代表,换句话说,每个公司的region_id
中可能缺少值。
我的想法到目前为止是创造这样一个新的数据帧:
new = pd.DataFrame(index=np.unique(df['com_id']),
columns=np.unique(data['region_id']))
,但我不知道怎么走的更远。
谢谢!
答
您可以拆散()如你试图做到这一点,但你需要首先设置索引:
df.set_index(['com_id','region_id']).unstack()
Out[1662]:
rep_name
region_id r1 r2 r3 r4
com_id
2233 A B NaN C
2234 E NaN D NaN
我试过,但得到了ValueError异常:索引包含重复的条目,不能重塑。 – jdeng 2014-09-22 15:52:08
对,我假设你每个唯一的com_id/region_id组合中会有0或1个名字,就像样本数据中一样。那么,如果它是2个或更多的名字,那么期望的输出应该是什么样的? – JohnE 2014-09-22 16:13:28
哎呀!我没有意识到com_id/region_id组合中有重复。我删除索引中的重复项,现在它可以工作! – jdeng 2014-09-22 17:34:50