2017-05-31 67 views

回答

4

np.tilenp.repeat

pd.DataFrame(dict(
     name=np.tile(df.name.values, 2), 
     number=np.repeat(df.number.values, 2) 
    )) 

    name number 
0 a  2 
1 b  2 
2 a  1 
3 b  1 

pd.MultiIndex.from_product

pd.DataFrame(
    pd.MultiIndex.from_product(
     [df.name.unique(), df.number.unique()] 
    ).values.tolist(), columns=df.columns) 

    name number 
0 a  2 
1 b  2 
2 a  1 
3 b  1 
+0

這是非常有用的!謝謝。 –

3

重複行:

In [10]: pd.concat([df] * 2, ignore_index=True) 
Out[10]: 
    name number 
0 a  2 
1 b  1 
2 a  2 
3 b  1 

列值的笛卡爾積:

In [14]: from itertools import product 

In [15]: pd.DataFrame(list(product(df.name, df.number)), columns=df.columns) 
Out[15]: 
    name number 
0 a  2 
1 a  1 
2 b  2 
3 b  1