python - 以重复方式选择数据框行
问题描述
我有一个类似于
name 2016 2017 2018 2019
0 google nil nil nil nil
1 investment 56 61 62 68
2 expense 23 25 32 45
3 research 19 22 25 37
4 rating 9 9 9 9
5 microsoft nil nil nil nil
6 investment 60 70 69 81
7 expense 50 60 70 80
8 research 9 15 21 23
9 rating 9 9 9 9
10 apple nil nil nil nil
11 investment 90 90 92 92
12 expense 56 55 54 54
13 research 2 3 2 6
14 rating 9 8 9 9
我想从中创建一个类似的数据框,但只有特定的数据,只选择具有名称的行,研究,然后通过从费用中减去投资来计算余额。示例输出
name 2016 2017 2018 2019
0 google nil nil nil nil
1 balance 33 36 30 33
2 research 19 22 25 37
依此类推,我尝试使用带有for循环的数学计算a,df.iloc[c]
但没有运气......有什么帮助吗?
解决方案
对不起,我昨天看到了这个问题,但没有太多机会尝试一下。只要模型遵循您打印的结构,我就有一个可能的解决方案。
# variables
name = []
balance = []
research = []
ars = np.array([])
l_array = []
co = int(df.shape[0]/5) #every 5 rows a company
for model,index in zip(df.values,df.index): #model is numpy.ndarray
# Company name will always be in range +5 (like,0,5,10...)
ranger = [(lambda x: x*5)(x) for x in range(co)]
rangei = [(lambda x: x*5+1)(x) for x in range(co)]
rangee = [(lambda x: x*5+2)(x) for x in range(co)]
rangere = [(lambda x: x*5+3)(x) for x in range(co)]
if index in ranger:
name = model[0:] #everything
if index in rangei:
inv = model[1:] #values after name
if index in rangee:
exp = model[1:] #values after name
val_bal = np.subtract(inv,exp)
balance = np.insert(val_bal, 0, 'balance', axis=0)
if index in rangere:
research = model[0:] #everything
ars = np.concatenate((name,balance,research))
l_array.append(ars)
您可以从这里拆分数据框,或者您可以保持这种方式并将公司信息放在一行中。
new_df= pd.DataFrame(list(map(np.ravel, l_array)))
0 1 2 3 4 5 6 ... 8 9 10 11 12 13 14
0 google nil nil nil nil balance 33 ... 30 23 research 19 22 25 37
1 microsoft nil nil nil nil balance 10 ... -1 1 research 9 15 21 23
2 apple nil nil nil nil balance 34 ... 38 38 research 2 3 2 6
推荐阅读
- node.js - jsreport 在节点 10.15 中无法使用 html 到 xlsx 配方
- c# - Xamarin 主要方法或等效方法
- java - 使用 2 个文件 .java 和 .jar 在 R 中运行 Java
- r - 如何使用具有 rep 和 seq 函数的 R 技术生成系列 'a','a',1,2,3,4,5,7,9,11
- javascript - openlayers Explorer 的地理位置
- javascript - Highcharter:将字符串变量添加到工具提示中
- django - API 端点 URL 与
还是没有? - python-3.x - 引用要在不同 Python 类中创建的类实例
- angular - 在通知栏上显示之前修改通知 Ionic 3?
- reactjs - 如何使用酶的安装方法测试 React 组件