简体   繁体   中英

Make index first row in group in pandas dataframe

I was wondering if it were possible to make the first row of each group based on index, the name of that index. Suppose we have a df like this:

dic = {'index_col': ['a','a','a','b','b','b'],'col1': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(dic).set_index('index_col')

df1

Is it possible to transform the dataframe above to one that looks like the one below? What happened here is that the index has been reset, and for every group, the first row is the index name?

df2

The result is a pandas.Series ;

df_list = []
for label , group in df.groupby('index_col'):
    df_list.append(pandas.concat([pandas.Series([label]), group['col1']]))

df_result = pandas.concat(df_list).reset_index(drop=True)

Output;

0    a
1    1
2    2
3    3
4    b
5    4
6    5
7    6
dtype: object

Call df_result.to_frame() if you want a data-frame.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM