首页 / PYTHON / python-熊猫将行与列值匹配
python-熊猫将行与列值匹配
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-熊猫将行与列值匹配,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含10480字,纯文字阅读大概需要15分钟。
内容图文
![python-熊猫将行与列值匹配](/upload/InfoBanner/zyjiaocheng/668/8b39c7beea97469f864ff3243e6bf733.jpg)
我有一个JSON输出,我试图在excel中使用.
我想做的是将“重量”匹配为“列标题”.
我可以使用一些循环获得此输出.
我想要得到的是将所有权重作为第一列标题,如果它具有值,则将其粘贴到其他NaN中.
所需输出:
page = requests.get(mainurl)
data = json.loads(page.text)
for i in data['categories']:
for j in i['items']:
if a == 1: # so changes and appends keys per category (highlighted)
a=2 # so not true in this loop
s=tuple(j['prices'].keys())
ws.append(s)
PVAL=list(j['prices'].values())
ws.append(PVAL)# append the value
a=1 # makes true next category
p= []
for i in price: # I know this is absolute madness but dicts were getting sorted
i = str(i).replace("'",'').replace('{','').replace('}','')# get price values
p.append(i)
###apppend in excel
注意:通过以上代码可以看出,我是一个完整的初学者.上面的代码使用2-3行熊猫可能会很漂亮:(
我现在正在与Pandas进行修补,因为我认为它将更快更好.
主要编辑:
所以我没有很多时间,所以我这样做了:
for i in data['categories']:
for j in i['items']:
PVAL=j['prices']
try:
ounce = PVAL['ounce']
except:
ounce = 'NaN'
try:
gram = PVAL['gram']
except:gram = 'NaN'
try:
twograms = PVAL['two_grams']
except:twograms='NaN'
try:
quarter=PVAL['quarter']
except:quarter='NaN'
try:
eighth=PVAL['eighth']
except:eighth='NaN'
try:
halfO=PVAL['half_ounce']
except:halfO='NaN'
try:
unit = PVAL['unit']
except:unit='NaN'
try:
halfgram = PVAL['half_gram']
except:halfgram='NaN'
name= j['name']
cat = j['category_name']
listname = j['listing_name']
namel.append(name)
catl.append(cat)
listnamel.append(listname)
halfOl.append(halfO)
halfgraml.append(halfgram)
unitl.append(unit)
eighthl.append(eighth)
twogramsl.append(twograms)
quarterl.append(quarter)
ouncel.append(ounce)
graml.append(gram)
然后将这些列表添加到Excel中.
我知道这不是Pythonic,但我仍在尝试在Pandas中找到一种好的方法.
解决方法:
由于我的代表仍然很低,尚不能发表任何评论,因此将其张贴在此处,如果提供进一步的说明,将对其进行编辑.
我没有在所需的输出中看到任何重量.如果我正确理解json文件,则您在给定重量单位的情况下迭代价格.是在每个项目上循环并在每个重量单位的价格上迭代的预期输出.如果没有重量单位,请输入NaN.有可能的重量单位清单吗?
熊猫还具有read_json函数,因此可以将其直接加载到熊猫数据帧.
-编辑-
对于延迟,我们深表歉意.请看下面的答案
import pandas as pd
import json
from cytoolz.dicttoolz import merge
#replace below with your json loader
with open('sample.json') as json_dta:
dict_dta = json.load(json_dta)
list_columns = ['id', 'name', 'category_name', 'ounce', 'gram', 'two_grams', 'quarter', 'eighth','half_ounce','unit','half_gram']
df = pd.io.json.json_normalize(dict_dta, ['categories', ['items']]).pipe(lambda x: x.drop('prices', 1).join(x.prices.apply(lambda y: pd.Series(merge(y)))))[list_columns]
以上将导致:
id name category_name ounce gram two_grams quarter eighth half_ounce unit half_gram
0 10501503 Recon Indica 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
1 11614583 Kush Dawg Indica 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
2 8602219 OG Kush Indica 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
3 11448858 Poison OG Outdoor Sativa 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
4 11731126 SunBurn 2.0 Outdoor Sativa 69.0 0.0 0.0 0.0 0.0 0.0 NaN NaN
5 6412418 Poison OG Sativa 99.0 9.0 18.0 40.0 25.0 70.0 NaN NaN
6 8982466 Sativa Trim Sativa 30.0 0.0 0.0 0.0 0.0 15.0 NaN NaN
7 11545434 Chupacabra Outdoor Hybrid 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
8 11458944 Platinum Girl Scout Cookies Outdoor Hybrid 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
9 11296163 Bubblegum Hybrid 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
10 11614623 C4 Hybrid 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
11 11333124 Chem Dawg Outdoor Hybrid 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
12 11458988 Candy Kush Hybrid 99.0 9.0 0.0 40.0 25.0 70.0 NaN NaN
13 10501592 Candy Kush Outdoor Hybrid 69.0 9.0 0.0 40.0 25.0 50.0 NaN NaN
14 9123804 ZOOTROCKS LemonGrass Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
15 9412336 Cherry Limeade 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
16 4970503 Peanut Budda Buddha, 100mg REC Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
17 9412238 Golden Strawberry Puck 100mg REC - CO Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
18 9412232 Cherry Puck 100mg REC - CO Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
19 9412228 Assorted Sour Pucks 100mg REC - CO Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
20 6454686 Assorted Fruity Pucks 100mg REC - CO Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
21 9412295 Sour Gummies Sativa 100mg, Recreational Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
22 7494303 Cheeba Chews Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
23 9411974 Mile High Mint, 100mg REC Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
24 9411972 Boulder Bar, 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
25 9412286 Sour Gummies Indica 100mg, Recreational Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
26 9412242 Watermelon Puck 100mg - REC Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
27 10066310 Coffee & Doughnuts Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
28 10065124 Wildflower Honey Edible NaN NaN NaN NaN NaN NaN 24.0 NaN
29 10064962 Clover Honey Edible NaN NaN NaN NaN NaN NaN 24.0 NaN
30 9412290 Sour Gummies Peach 100mg, Recreational Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
31 5926966 Stratos 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
32 10066271 Salt & Nibs Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
33 10065225 Yampa Valley Honey Edible NaN NaN NaN NaN NaN NaN 24.0 NaN
34 9412873 Fruit Punch Mints 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
35 9412251 Sour Gummies Hybrid 100mg, Recreational Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
36 9412922 Dutch Girl Carmel Waffle, 100mg Edible NaN NaN NaN NaN NaN NaN 20.0 NaN
37 6790292 Hybrid Distillate Jar Concentrate NaN 36.0 0.0 NaN NaN NaN NaN 0.0
38 6379060 Hybrid Cartridge Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 18.0
39 9009149 Pure Cannabis Oil Hybrid Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 0.0
40 9400145 Pure Cannabis Oil Sativa Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 0.0
41 9409961 Sativa Cartridge Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 18.0
42 9400121 Pure Cannabis Oil Indica Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 0.0
43 9409954 Indica Cartridge Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 18.0
44 9400467 Indica Distillate Jar Concentrate NaN 36.0 0.0 NaN NaN NaN NaN 0.0
45 9691836 PWO Wax by Mahatma Concentrate NaN 25.0 0.0 NaN NaN NaN NaN 0.0
46 9409970 Sativa Distillate Jar Concentrate NaN 36.0 0.0 NaN NaN NaN NaN 0.0
47 6134675 Bongs Gear NaN NaN NaN NaN NaN NaN 40.0 NaN
48 5993354 Small Glass Pipes Gear NaN NaN NaN NaN NaN NaN 10.0 NaN
49 4393434 Large Glass Pipes Gear NaN NaN NaN NaN NaN NaN 20.0 NaN
50 5941409 Pain Relief Salve, 2oz Topicals NaN NaN NaN NaN NaN NaN 26.0 NaN
51 8768835 THC Pain Stick Topicals NaN NaN NaN NaN NaN NaN 20.0 NaN
52 6370279 FORIA Pleasure (30ml) Spray Bottle Topicals NaN NaN NaN NaN NaN NaN 55.0 NaN
53 8911546 Bath Soak Topicals NaN NaN NaN NaN NaN NaN 20.0 NaN
54 9123854 FORIA Relief (2-pack) Suppositories Topicals NaN NaN NaN NaN NaN NaN 24.0 NaN
55 4187102 1 Gram Strain Specific-Prerolls Preroll NaN NaN NaN NaN NaN NaN 9.0 NaN
内容总结
以上是互联网集市为您收集整理的python-熊猫将行与列值匹配全部内容,希望文章能够帮你解决python-熊猫将行与列值匹配所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。