【发布时间】:2016-05-27 16:39:02
【问题描述】:
我想过滤列,然后动态连接生成的数据框。我天真的方法是;给定一个数据框,编写一个函数,根据列中的值进行过滤,使其变小然后加入。但我不知道如何动态加入。有更好的方法吗?
data = {'name': ['Jason', 'Molly', 'Jason', 'Jason', 'Molly'],
'year': [2012, 2012, 2013, 2014, 2014],
'sale': [41, 24, 31, 32, 31]}
df = pd.DataFrame(data)
print df
def joinDF(df):
unique_yr = df.year.unique().tolist()
i = 1
for yr in unique_yr:
df1 = df.loc[df['year'] == yr]
if len(df.index) != 0:
#make columns unique then join on name
df1[['year'+ str(i),'sale'+ str(i), 'name']] = df1[['year','sale','name']]
i+=1
print df1
joinDF(df)
sale name year
0 41 Jason 2012
1 24 Molly 2012
2 31 Jason 2013
3 32 Jason 2014
4 31 Molly 2014
sale1 name year1
0 41 Jason 2012
1 24 Molly 2012
sale2 name year2
2 31 Jason 2013
sale3 name year3
3 32 Jason 2014
4 31 Molly 2014
执行join,生成的输出数据框应如下所示:
sale1 name1 year1 sale2 year2 sale3 year3
0 41 Jason 2012 31 2013 32 2014
1 24 Molly 2012 NA NA 31 2014
【问题讨论】:
-
不清楚你在问什么。你想要什么数据框作为输出?而
age的信息又是从哪里来的? -
@IanS 对不起,我把它改成了销售,没有年龄。输出应该是所有三个的连接,如图所示