需要将列中的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
答案 0 :(得分:3)
将Index.repeat
与GroupBy.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