我正在从一个使用零件号码的网站上削价。逻辑是:
例如,下面是部件编号(输入)的初始列表:
b123
nadsf
电源
维奥阿
它们各属于一家公司:
Part # Company A B C D
b123 1.5
nadsf 3.4
ower 47
weoa 33
csv目前的输出是:
0
0 1.5
1 0
2 0
3 0
0 0
1 3.4
2 0
3 0
0 0
1 0
2 33
3 0
0 0
1 0
2 0
3 47
0 0
1 0
2 0
3 0
我只想要一个列表,而不是5个;所需的输出是:
0 1.5
1 3.4
2 33
3 47
不知道我怎么能做到,
如有任何帮助/建议,请见谅!
有关我的代码,请参阅下面:
import pandas as pd
df = pd.read_excel(r'C:\Users\212677036\Documents\Copy of MIC Parts Review.xlsx')
PN = pd.DataFrame(df, columns=['Product code'])
i = 0
Total_rows = PN.shape[0]
partnumlist = []
partnumlist1 = []
partnumlist2 = []
partnumlist3 = []
partnumlist4 = []
partnumlist5 = []
while i < Total_rows:
data = {"partOptionFilter": {"PartNumber": PN.iloc[i, 0], "AlternativeOemId": "17155"}}
r = requests.post('https://www.partsfinder.com/Catalog/Service/GetPartOptions', json=data).json()
partnumlist.append(r['Data']['PartOptions'][0]['YourPrice'])
data1 = {"partOptionFilter": {"PartNumber": PN.iloc[i, 0], "AlternativeOemId": "17475"}}
r1 = requests.post('https://www.partsfinder.com/Catalog/Service/GetPartOptions', json=data1).json()
partnumlist1.append(r1['Data']['PartOptions'][0]['YourPrice'])
data2 = {"partOptionFilter": {"PartNumber": PN.iloc[i, 0], "AlternativeOemId": "16880"}}
r2 = requests.post('https://www.partsfinder.com/Catalog/Service/GetPartOptions', json=data2).json()
partnumlist2.append(r2['Data']['PartOptions'][0]['YourPrice'])
data3 = {"partOptionFilter": {"PartNumber": PN.iloc[i, 0], "AlternativeOemId": "47221"}}
r3 = requests.post('https://www.partsfinder.com/Catalog/Service/GetPartOptions', json=data3).json()
partnumlist3.append(r3['Data']['PartOptions'][0]['YourPrice'])
data4 = {"partOptionFilter": {"PartNumber": PN.iloc[i, 0], "AlternativeOemId": "17045"}}
r4 = requests.post('https://www.partsfinder.com/Catalog/Service/GetPartOptions', json=data4).json()
partnumlist4.append(r4['Data']['PartOptions'][0]['YourPrice'])
data5 = {"partOptionFilter": {"PartNumber": PN.iloc[i, 0], "AlternativeOemId": "17055"}}
r5 = requests.post('https://www.partsfinder.com/Catalog/Service/GetPartOptions', json=data5).json()
partnumlist5.append(r5['Data']['PartOptions'][0]['YourPrice'])
i=i+1
list_of_dataframes = [pd.DataFrame(partnumlist),pd.DataFrame(partnumlist1),
pd.DataFrame(partnumlist2), pd.DataFrame(partnumlist3),
pd.DataFrame(partnumlist4), pd.DataFrame(partnumlist5)]
pd.concat(list_of_dataframes).to_csv(r'C:\Users\212677036\Documents\output25.csv')
发布于 2019-10-02 12:17:51
我假设当前的CSV输出在它中遵循了0的模式。您可以对输出CSV或作为CSV保存的数据帧应用简单的筛选操作。
例如,您的输出CSV被转换为Dataframe。
df = pd.concat(list_of_dataframes) #假设这是您的输出csv数据
我没有看到df的列名。您可能可以在第二列中添加一个列名,其中包含您所选择的0。一旦你有了这个,
df =df[~(df‘’col‘== 0]
这将删除第二列中带有0的所有行(因为有~),并给出所需的结果。
发布于 2019-10-02 23:28:48
您可以使用布尔索引移除所有的零值并重置索引,以便它将计数从0到N-1。在将pd.concat
保存到cvs之前,您必须将它的结果保存到变量中。你可以这样做:
concatenated = pd.concat(list_of_dataframes)
clean = concatenated[concatenated[0] != 0].reset_index(drop=True)
clean.to_csv(r'C:\Users\212677036\Documents\output25.csv')
这将为您提供所需的输出:
0 1.5
1 3.4
2 33
3 47
为了提供更多的洞察力,输出csv文件第一行中的0
是DataFrame的列名。在不向0..M
构造函数提供范围索引时,熊猫默认使用DataFrame的范围索引(M =# of列)。
因此,concatenated[0]
选择DataFrame中的第一列,concatenated[0] == 0
检查列中的每个值是否等于0
,从而生成一系列True
或False
值,然后这些值可用于选择性地索引数据。
https://stackoverflow.com/questions/58206721
复制