我有一个数据框,如下所示:
data
0 a
1 a
2 a
3 a
4 a
5 b
6 b
7 b
8 b
9 b
我想将a和b的重复值分组为单个行元素,如下所示:
data
0 a
a
a
a
a
1 b
b
b
b
b
我该怎么做?我尝试了以下操作,但是将每个重复的值放在自己的列中
df.groupby('data')
答案 0 :(得分:2)
似乎像一个pivot
问题,但是由于缺少列(由cumcount
创建)和索引(由factorize
创建)列,因此很难弄清
pd.crosstab(pd.factorize(df.data)[0],df.groupby('data').cumcount(),df.data,aggfunc='sum')
Out[358]:
col_0 0 1 2 3 4
row_0
0 a a a a a
1 b b b b b
答案 1 :(得分:1)
类似
index = ((df['data'] != df['data'].shift()).cumsum() - 1).rename(columns= {'data':''})
df = df.set_index(index)
data
0 a
0 a
0 a
0 a
0 a
1 b
1 b
1 b
1 b
1 b
答案 2 :(得分:1)
您可以使用pd.factorize
,然后使用set_index
:
df = df.assign(key=pd.factorize(df['data'], sort=False)[0]).set_index('key')
print(df)
data
key
0 a
0 a
0 a
0 a
0 a
1 b
1 b
1 b
1 b
1 b