如何在同一列中写入两个不同变量值的excel/pandas Dataframe
Posted
技术标签:
【中文标题】如何在同一列中写入两个不同变量值的excel/pandas Dataframe【英文标题】:How to write in excel/pandas Dataframe of two different variables value in same column 【发布时间】:2021-01-28 19:48:25 【问题描述】:我是 pandas 的新手,想弄清楚如何在同一列中添加两个不同的变量值。
import pandas as pd
import requests
from bs4 import BeautifulSoup
itemproducts = pd.DataFrame()
url = 'https://www.trwaftermarket.com/en/catalogue/product/BCH720/'
r = requests.get(url)
soup = BeautifulSoup(r.content,'lxml')
code_name = soup.find_all('div','class':'col-sm-6 intro-section reset-margin')
for head in code_name:
item_code = head.find('span','class':'heading').text
item_name = head.find('span','class':'subheading').text
for tab_ in tab_4:
ab = tab_.find_all('td')
make_name1 = ab[0].text.replace('Make','')
code1 = ab[1].text.replace('OE Number','')
make_name2 = ab[2].text.replace('Make','')
code2 = ab[3].text.replace('OE Number','')
itemproducts=itemproducts.append('CODE':item_code,
'NAME':item_name,
'MAKE':[make_name1,make_name2],
'OE NUMBER':[code1,code2],ignore_index=True)
输出(Excel 图像)
我到底想要什么
【问题讨论】:
【参考方案1】:在 pandas 中,您必须以相同的长度指定所有数据。因此,在这种情况下,我建议您将每一列或每一行指定为一个固定长度的列表。对于那些少一个成员的,附加一个NaN
来匹配。
【讨论】:
【参考方案2】:我在*** 上发现了一个类似的问题,可以帮助您。另一种方法是使用 Pandas Dataframe 中的explode function。
下面我举了一个来自 pandas 文档的例子。
>>> df = pd.DataFrame('A': [[1, 2, 3], 'foo', [], [3, 4]], 'B': 1)
>>> df
A B
0 [1, 2, 3] 1
1 foo 1
2 [] 1
3 [3, 4] 1
>>> df.explode('A')
A B
0 1 1
0 2 1
0 3 1
1 foo 1
2 NaN 1
3 3 1
3 4 1
【讨论】:
【参考方案3】:我无法从您的脚本中重现结果。但是,根据您的最终数据框,您可以在最后使用explode
和apply
数据框:
#creating your dataframe
itemproducts = pd.DataFrame('CODE':'BCH720','MAKE':[['HONDA','HONDA']],'NAME':['Brake Caliper'],'OE NUMBER':[['43019-SAA-J51','43019-SAA-J50']])
>>> itemproducts
CODE MAKE NAME OE NUMBER
0 BCH720 ['HONDA', 'HONDA'] Brake Caliper ['43019-SAA-J51', '43019-SAA-J50']
#using apply method with explode on 'MAKE' and 'OE NUMBER'
>>> itemproducts.apply(lambda x: x.explode() if x.name in ['MAKE', 'OE NUMBER'] else x)
CODE MAKE NAME OE NUMBER
0 BCH720 HONDA Brake Caliper 43019-SAA-J51
0 BCH720 HONDA Brake Caliper 43019-SAA-J50
【讨论】:
添加了答案。请让我知道这对你有没有用。如果确实如此,请考虑接受/勾选答案。以上是关于如何在同一列中写入两个不同变量值的excel/pandas Dataframe的主要内容,如果未能解决你的问题,请参考以下文章