我有以下格式的pandas df:
A B C
0 2 1 428
1 4 3 14
2 5 5 177
我希望有一个数组,其中A是行,B列和C值-棘手的部分是数组在索引意义上应该是完整的,所以:
[[ 0. 0. 0. 0. 0.]
[428. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 14. 0. 0.]
[ 0. 0. 0. 0. 177.]]
其余的地方都填零。
我可以通过一系列的for循环来做到这一点,但是有什么聪明的方法吗?
参考方案
您可以在put
中使用方法numpy
:
arr = np.zeros((df['A'].max(), df['B'].max()))
idx = (df['A'] - 1) * df['B'].max() + (df['B'] - 1)
arr.put(idx, df['C'])
输出:
[[ 0. 0. 0. 0. 0.]
[428. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 14. 0. 0.]
[ 0. 0. 0. 0. 177.]]
如果需要索引从零开始的矩阵:
arr = np.zeros((df['A'].max() + 1, df['B'].max() +1 ))
idx = df['A'] * (df['A'].max() + 1) + df['B']
arr.put(idx, df['C'])
输出:
[[ 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0.]
[ 0. 428. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 14. 0. 0.]
[ 0. 0. 0. 0. 0. 177.]]
python pandas:按行对条件进行分组 - python我有一个大的pandas数据框,试图从中形成一些行的对。我的df如下所示:object_id increment location event 0 1 d A 0 2 d B 0 3 z C 0 4 g A 0 5 g B 0 6 i C 1 1 k A 1 2 k B ... ... ... ... 对象ID描述特定的对象。增量是每次发生某事(跟踪订单)时…
在返回'Response'(Python)中传递多个参数 - python我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…
Python-Excel导出 - python我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…
pandas DataFrame:根据另一列中的布尔值计算总和 - python我对Python相当陌生,我尝试在pandas中模拟以下逻辑我目前正在循环抛出行,并希望对前几行的AMOUNT列中的值求和,但只求和最后一次看到的“ TRUE”值。实际数据似乎效率低下(我的数据框大约有500万行)?想知道用Python处理这种逻辑的有效方法是什么?逻辑:逻辑是,如果FLAG为TRUE,我想对前几行的AMOUNT列中的值求和,但只求和最后一次…
Python exchangelib在子文件夹中读取邮件 - python我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…