为列表中的值创建重复的数据帧行? [蟒蛇]

时间:2018-06-11 07:35:15

标签: python pandas

我的单列数据框有一些客户ID。

df.head()
id 
12
13
14

想要复制一年中所有月份的行[id],如下所示:

month_list = ["2018-Jan", "2018-Feb", "2018-Mar"]
df_new.head()
id date
12 2018-Jan 
12 2018-Feb
12 2018-Mar
13 2018-Jan 
13 2018-Feb
13 2018-Mar

2 个答案:

答案 0 :(得分:2)

numpy.repeat使用numpy.tile

df = pd.DataFrame({'id':np.repeat(df['id'], len(month_list)), 
                   'date':np.tile(month_list, len(df))})
print (df)
   id      date
0  12  2018-Jan
0  12  2018-Feb
0  12  2018-Mar
1  13  2018-Jan
1  13  2018-Feb
1  13  2018-Mar
2  14  2018-Jan
2  14  2018-Feb
2  14  2018-Mar

答案 1 :(得分:0)

您可以使用pandas merge:对于现有数据框

import pandas as pd
import numpy as np

df = pd.DataFrame({'id': [1, 2, 3]})
df['key'] = np.repeat(0, len(df))
month_df = pd.DataFrame({'month': ["2018-Jan", "2018-Feb", "2018-Mar"]})
month_df['key'] = np.repeat(0, len(month_df))

df = df.merge(month_df, on='key')
print(df)

Out[10]: 
   id  key     month
0   1    0  2018-Jan
1   1    0  2018-Feb
2   1    0  2018-Mar
3   2    0  2018-Jan
4   2    0  2018-Feb
5   2    0  2018-Mar
6   3    0  2018-Jan
7   3    0  2018-Feb
8   3    0  2018-Mar