Python 熊猫抓取的数据在熊猫身上不起作用

Python 熊猫抓取的数据在熊猫身上不起作用,python,python-3.x,pandas,selenium,screen-scraping,Python,Python 3.x,Pandas,Selenium,Screen Scraping,为什么当我将数据手动输入excel时,pandas工作正常。然而,当我抓取数据时,将其放入csv。它给了我: zz = df1.WE=np.where(df3.AL.isin(df1.EW),df1.WE,np.nan) ValueError: operands could not be broadcast together with shapes (148,) (537,) () 其他站点没有出现这种情况。我是不是漏掉了什么明显的东西?excel格式是否不正确,或者此处的数据是否有

为什么当我将数据手动输入excel时,pandas工作正常。然而,当我抓取数据时,将其放入csv。它给了我:

    zz = df1.WE=np.where(df3.AL.isin(df1.EW),df1.WE,np.nan)
ValueError: operands could not be broadcast together with shapes (148,) (537,) () 
其他站点没有出现这种情况。我是不是漏掉了什么明显的东西?excel格式是否不正确,或者此处的数据是否有所不同

df3

df1

代码:

我已经提供了创建dataframe 1、2和pandas代码的所有脚本,直到它创建错误为止

我一直在

错误:

    zz = df1.WE=np.where(df3.AL.isin(df1.EW),df1.WE,np.nan)
ValueError: operands could not be broadcast together with shapes (0,) (4,) ()
从scrape创建并作为数据帧加载的错误文件:

如果这是不够的,我也加载了文件,因为他们是

,

手动创建的工作文件:

工作:

,


你知道怎么解决吗?

我想你需要改变:

df1.WE=np.where(df3.AL.isin(df1.EW),df1.WE,np.nan)

问题是数据帧的长度与实际数据不同。因此,需要将
df1
中的数据更改为另一个数据-将返回的MAK与
df1
长度相同且无错误

使用您的数据:

df1 = pd.read_csv('df1.csv', names=['a','b','c'])
print (df1.head())
                                           a     b  \
0             Ponte Preta U20 v Cruzeiro U20  2.10   
1  Fluminense RJ U20 v Defensor Sporting U20  2.00   
2              Gremio RS U20 v Palmeiras U20  3.30   
3                       Barcelona v Sporting  1.33   
4                        Bayern Munich v PSG  2.40   

                                                   c  
0  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
1  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
2  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
3  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
4  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  

comapre数字列,此处为
b
d

df1.b=np.where(df1.b.isin(df2.d),df1.b,np.nan)
#first 5 values is NaNs
print (df1.head())
                                           a   b  \
0             Ponte Preta U20 v Cruzeiro U20 NaN   
1  Fluminense RJ U20 v Defensor Sporting U20 NaN   
2              Gremio RS U20 v Palmeiras U20 NaN   
3                       Barcelona v Sporting NaN   
4                        Bayern Munich v PSG NaN  


测试数据的另一个问题是行数(4)相同,因此没有错误。

在旁注中,我建议对pandas使用pandas函数:

df1.loc[~df1.EW.isin(df2.AL), 'WE'] = np.nan

好的,让我们回到绘图板上。上面的代码更简洁,但与使用numpy时的操作完全相同。让我们分开你的代码

1) 我强烈建议您使用jupyter/jupyter笔记本电脑来处理数据并了解每一行的情况。看看这里,例如:

因此,df1有100行和3列。df2有42行5列

现在,您将
df3
创建为一个空数据帧(0行),但有12列(顺便说一句,也许您应该使用更多解释性的列名)。这一步完全可以,而不必事先定义所有列

让我们转到第二行: df3['DAT']=df2['AA']

这里基本上是从第二个数据帧复制列。现在,因为我们以前在df3中没有任何行,所以它是完全合法的操作。通过这样做,您可以在df3中创建42行。同样,这一行本身是好的

现在,最后一行。这里的逻辑如下:首先,对于df3中的每一行,我们检查
df3.AL
(其值)的单元格是否在
df1.EW
列中。请注意,我们以前从未定义过df3.AL,因此整个列只包含nan,因此这本身没有任何意义

接下来,让我们假设df3.AL中有一些东西。当我们逐行检查所有内容时,我们将得到一个布尔值的pd.Series(think-one列),作为这个测试的结果,这个列有42行。现在,我们尝试将此列用作“掩码”,它定义df1.we是否应该相同或默认为Nan。但您不能这样做,因为df1有100行,而不是42行!。亨斯,我们搞错了


因此,您需要重新定义您在这里实际想要做什么-现在还不清楚您在这里实际需要做什么。

我得到:raise ValueError('值的长度与''index'的长度不匹配')ValueError:值的长度与索引的长度不匹配:df3['O2']=zz您不认为可以看一下吗?尝试为3个数据帧创建vlookup。我不建议编写像
x=y=4+5
这样的东西,因为它很难阅读。这里显然我们没有给d['O2']赋值,亨斯,可能,它都是空的。也许,这会奏效
df3.loc[~df3.EW.isin(df2.AL),'WE']=np.nan
然后
df3['O3']=df3.WE
呃,等着瞧。该代码对我不起作用。尽管我试图调整它,但这会创建一个空O3列
df1.WE=np.where(df1.EW.isin(df2.AL),df1.WE,np.nan)
df1 = pd.read_csv('df1.csv', names=['a','b','c'])
print (df1.head())
                                           a     b  \
0             Ponte Preta U20 v Cruzeiro U20  2.10   
1  Fluminense RJ U20 v Defensor Sporting U20  2.00   
2              Gremio RS U20 v Palmeiras U20  3.30   
3                       Barcelona v Sporting  1.33   
4                        Bayern Munich v PSG  2.40   

                                                   c  
0  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
1  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
2  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
3  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
4  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
df2 = pd.read_csv('df2.csv', names=['a','b','c', 'd', 'e'])
print (df2.head())
                 a                    b                  c     d  \
0          In-Play      CSKA Moscow U19        Man Utd U19  1.14   
1          In-Play  Atletico Madrid U19        Chelsea U19  1.01   
2          In-Play         Juventus U19     Olympiakos U19  1.40   
3  Starting in 22'       Paris St-G U19  Bayern Munich U19  2.24   
4      Today 21:00         Man City U19       Shakhtar U19  2.66   

                                                   e  
0  https://www.betfair.com.au/exchange/plus/footb...  
1  https://www.betfair.com.au/exchange/plus/footb...  
2  https://www.betfair.com.au/exchange/plus/footb...  
3  https://www.betfair.com.au/exchange/plus/footb...  
4  https://www.betfair.com.au/exchange/plus/footb...  
df1.b=np.where(df1.b.isin(df2.d),df1.b,np.nan)
#first 5 values is NaNs
print (df1.head())
                                           a   b  \
0             Ponte Preta U20 v Cruzeiro U20 NaN   
1  Fluminense RJ U20 v Defensor Sporting U20 NaN   
2              Gremio RS U20 v Palmeiras U20 NaN   
3                       Barcelona v Sporting NaN   
4                        Bayern Munich v PSG NaN  
                                                   c  
0  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
1  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
2  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
3  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
4  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  

#check if some not NaNs values in b column
print (df1[df1.b.notnull()])
                                       a      b  \
23                Swindon v Forest Green   1.40   
50       Sportivo Barracas v Canuelas FC  13.00   
80                              FC Nitra   1.53   
81                                   0-0   1.40   
83       Cape Town City v Maritzburg Utd   1.53   
84         Mamelodi Sundowns v Baroka FC   3.75   
90  Dorking Wanderers v Tonbridge Angels   1.53   
95             Coalville Town v Stamford   1.40   

                                                    c  
23  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
50  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
80  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
81  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
83  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
84  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
90  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
95  https://www.bet365.com.au/#/AC/B1/C1/D13/E40/F...  
df1.loc[~df1.EW.isin(df2.AL), 'WE'] = np.nan