一家公司可能会在不同时间从多家银行获得不同级别的资金(种子,a).
让我们看看数据然后是故事,以获得更好的画面.
import pandas as pddata = {'ID':[1,2,3,4],'company':['Alpha','beta','Alpha','Alpha'],'bank':['z','x','y','z','j'],'rd': ['seed','seed','a','a'],'funding': [100,200,300,50],'date': ['2006-12-01','2004-09-01','2007-05-01','2007-09-01']}df = pd.DataFrame(data,columns = ['ID','company','round','bank','funding','date'])df
产量:
ID company rd bank funding date0 1 Alpha seed z 100 2006-12-011 2 beta seed x 200 2004-09-012 2 beta seed y 200 2004-09-013 3 Alpha a z 300 2007-05-014 4 Alpha a j 50 2007-09-01
期望的输出:
company bank_seed funding_seed date_seed bank_a funding_a date_a 0 Alpha z 100 2006-12-01 [z,j] 350 2007-09-011 beta [x,y] 200 2004-09-01 None None None
正如你所看到的,我不是一个超人,而是试图解释我的思维过程.
我们来看看公司的Alpha
公司阿尔法在2006年底首次从银行z获得100美元的种子资金.几个月后,他们的投资者对他们的进展感到非常满意,因此银行给了他们钱(300多美元!).然而,公司阿尔法需要更多的现金,但不得不去一些随机的瑞士银行j来保持活力.银行j不情愿地再给了50美元.好极了!他们现在从2007年9月结束的更新’a’回合中得到350美元.
公司测试版非常新.他们从两家不同的银行获得了总计200美元的资金.但是等等……这里没有什么关于他们的回合’a’.那没关系,我们现在就把None放进去,稍后再回来查看.
问题是公司的阿尔法很糟糕并从瑞士获得了资金……
这是我的非工作代码,它处理了我的数据子集 – 它在这里不起作用.
import itertoolsunique_company = df.company.unique()df_indexed = df.set_index(['company','rd'])index = pd.MultiIndex.from_tuples(List(itertools.product(unique_company,List(df.rd.unique()))))reindexed = df_indexed.reindex(index,fill_value=0)reindexed = reindexed.unstack().applymap(lambda cell: 0 if '1970-01-01' in str(cell) else cell)working_df = pd.DataFrame(reindexed.iloc[:,reindexed.columns.get_level_values(0).isin(['company','funding'])].to_records())
如果您知道如何解决部分问题,请继续将其放在下面.提前谢谢你花时间看看这个! 总结
以上是内存溢出为你收集整理的python-2.7 – Superhuman Level – 由于重复,Pandas DataFrame重塑全部内容,希望文章能够帮你解决python-2.7 – Superhuman Level – 由于重复,Pandas DataFrame重塑所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)