按范围扩展DataFrame

时间:2018-10-11 09:05:09

标签: python pandas

需要将列中的dataframe的索引从0复制到value。是否有一种(向量化的)方式可以将此df1扩展为df2?谢谢

import pandas as pd
df1 = pd.DataFrame(range(3), index=range(3000, 3003))
      0
3000  0
3001  1
3002  2

df2 = ???
      0
3000  0
3001  0
3001  1
3002  0
3002  1
3002  2

1 个答案:

答案 0 :(得分:3)

Index.repeatGroupBy.cumcount一起使用:

df1 = df1.loc[df1.index.repeat(df1[0] + 1)]
df1[0] = df1.groupby(0).cumcount()
print (df1)
      0
3000  0
3001  0
3001  1
3002  0
3002  1
3002  2

对于Series,请使用Index.to_series

s = df1.index.repeat(df1[0] + 1).to_series()
s = s.groupby(s).cumcount()
print (s)
3000    0
3001    0
3001    1
3002    0
3002    1
3002    2
dtype: int64

DataFrame中的Series添加Series.to_frame

df = s.groupby(s).cumcount().to_frame()
print (df)
      0
3000  0
3001  0
3001  1
3002  0
3002  1
3002  2