加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python-2.7 – Superhuman Level – 由于重复,Pandas DataFrame

发布时间:2020-12-20 12:00:19 所属栏目:Python 来源:网络整理
导读:你喜欢只有超人可以解决的谜题吗?这是证明这种能力的最终测试. 一家公司可能会在不同时间从多家银行获得不同级别的资金(种子,a). 让我们看看数据然后是故事,以获得更好的画面. import pandas as pddata = {'id':[1,2,3,4],'company':['alpha','beta','alpha
你喜欢只有超人可以解决的谜题吗?这是证明这种能力的最终测试.

一家公司可能会在不同时间从多家银行获得不同级别的资金(种子,a).

让我们看看数据然后是故事,以获得更好的画面.

import pandas as pd
data = {'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        date
0   1    alpha      seed      z        100  2006-12-01
1   2     beta      seed      x        200  2004-09-01
2   2     beta      seed      y        200  2004-09-01
3   3    alpha         a      z        300  2007-05-01
4   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-01
1     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 itertools

unique_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())

如果您知道如何解决部分问题,请继续将其放在下面.提前谢谢你花时间看看这个!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读