【发布时间】:2018-11-01 16:12:49
【问题描述】:
我不确定我的措辞是否正确,但我会举例说明。
我尝试过“groupby”和“pivot”,但我无法解决。
所以,这是我的数据框:
col1 col2 col3
0 A a 3
1 A b 5
2 A c 10
3 B d 12
4 B e 6
5 C f 9
期望的输出是:
col2_1 col2_2 col2_3 col3_1 col3_2 col3_3
A a b c 3 5 10
B d e NaN 12 6 NaN
C f NaN NaN 9 NaN NaN
到目前为止,我已经尝试使用for's:
frecs = pd.crosstab(index = frame['col1'], columns = 'frecuencia')
output_df = pd.DataFrame(columns = 'col1')
for k in frame.index.values:
for i in frame.keys():
for j in range(1,frecs.frecuencia.values[list(np.unique(frame['col1'].values)).index(frame.loc[k,'col1'])]+1):
output_df.loc[k,"".join([i,str(j)])] = frame.loc[str(int(list(np.unique(frame['col1'].values)).index(frame.loc[k,'col1']))+j-1),i]
接近它,但在为每个条目分配正确的元素时不足。我也一直在寻找在
中使用 groupbyframe.groupby(['col1']).apply(frame[list).apply(pd.Series)
但也没有找到运气。
【问题讨论】:
-
嗨,欢迎来到 StackOverflow!到目前为止,您到底尝试了什么。请分享您使用的代码的sn-ps
-
谢谢@ScipioneSarlo。好吧,到目前为止,我所拥有的最好的是我认为效率很低,但至少是这样。我会更新问题。
-
您能用文字描述一下输出的内容以及获取输出的方法吗?
-
@HarvIpan 嘿!好吧,我想为元素的每个“类别”分组“col1”。然后,创建n个子列,其元素是该列类别的对应值。
标签: python-3.x pandas pandas-groupby