Python 将数据帧列表连接到单个数据帧会产生NaN值

Python 将数据帧列表连接到单个数据帧会产生NaN值,python,dataframe,concatenation,Python,Dataframe,Concatenation,我正在从一个网站上调出一堆表格。我已经能够得到一个数据帧列表,每个数据帧对应于网站上的一个表。但是,当我尝试将它们连接到一个数据帧时,第一个表的值与它们应该的一样,但是除了列索引之外,其他表的值都是NaN。代码为: import pandas as pd import requests from bs4 import BeautifulSoup from tabulate import tabulate res = requests.get("https://www.atptour.com/e

我正在从一个网站上调出一堆表格。我已经能够得到一个数据帧列表,每个数据帧对应于网站上的一个表。但是,当我尝试将它们连接到一个数据帧时,第一个表的值与它们应该的一样,但是除了列索引之外,其他表的值都是NaN。代码为:

import pandas as pd
import requests
from bs4 import BeautifulSoup
from tabulate import tabulate

res = requests.get("https://www.atptour.com/en/players/rafael-nadal/n409/fedex-atp-win-loss")
soup = BeautifulSoup(res.content,'lxml')
table = soup.find_all(class_="mega-table")


all_data = []
data = pd.read_html(str(table[0]), header =None, index_col= 0)
data = data[0].dropna(axis=0, thresh = 4)
all_data.append(data)

for i in range(1,len(table)):
    data = pd.read_html(str(table[i]), header =None, index_col= 0, skiprows= 0)
    data = data[0].dropna(axis=0, thresh = 4)
    data.columns = [all_data[0].columns]
    all_data.append(data)
print(all_data)
df = pd.concat(all_data)
print(df)
:


任何帮助都将不胜感激

我将对此稍作编辑,以包括实际的解释,但仍有一些更改需要进行

将熊猫作为pd导入
导入请求
从bs4导入BeautifulSoup
导入pprint
col_name=['年初至今损益表','年初至今联邦快递指数','职业损益表','职业联邦快递指数','头衔']
res=requests.get(“https://www.atptour.com/en/players/rafael-nadal/n409/fedex-atp-win-loss")
汤=BeautifulSoup(res.content,features='lxml')
所有表格=汤。查找所有表格(class='mega-table')
所有_数据=[]
对于所有表格中的当前表格:
curr\u data=pd.read\u html(str(curr\u table),header=None,index\u col=0)[0]
当前数据=当前数据[curr\u data.iloc[:,0]!='-']
curr_data.rename(columns=dict(zip(curr_data.columns,col_name)),inplace=True)
curr_data=curr_data.astype(数据类型={'Titles':'Int64'})
所有数据。追加(当前数据)
res_df=pd.concat(所有数据,排序=False,忽略索引=True)
pprint.pprint(res_df)
最终输出:

   YTD W/L  YTD Fedex Index Career W/L  Career Fedex Index  Titles
0   51 - 6            0.895  970 - 196               0.832      84
1   24 - 2            0.923   271 - 38               0.877      19
2   22 - 2            0.917   384 - 79               0.829      35
3   10 - 4            0.714  236 - 150               0.611     NaN
4    7 - 4            0.636   169 - 89               0.655     NaN
5    4 - 1            0.800    84 - 37               0.694     NaN
6    4 - 2            0.667   159 - 73               0.685     NaN
7    1 - 0            1.000    22 - 12               0.647     NaN
8   21 - 3            0.875   436 - 39               0.918      59
9    5 - 1            0.833    71 - 20               0.780       4
10  25 - 2            0.926  461 - 131               0.779      21
11   0 - 0            0.000      2 - 6               0.250       0
12   4 - 0            1.000    82 - 37               0.689       2
13  47 - 6            0.887  888 - 159               0.848      82
14  49 - 1            0.980   858 - 45               0.950     NaN
15   2 - 5            0.286  112 - 151               0.426     NaN
16  46 - 6            0.885  869 - 181               0.828     NaN
17   5 - 0            1.000   101 - 15               0.871     NaN

你期待什么结果?这些数据帧似乎有非常不同的列,我认为将它们连接起来没有多大意义。@AlexanderCécile我希望每个数据帧中的列都位于连接的数据帧中给定的标题下。每个数据帧的单个头是任意的。第一个数据帧的头就是我想要的头。例如,压力点数据框中的第一列将位于YTD W/L之下,依此类推。如果这有道理的话。基本上,获取每个数据帧中的值并将它们放入连接的数据帧中。很抱歉解释得不好,所以每个数据帧都有5列。我认为问题可能在于每个数据帧的标题不同。是的,你说得对。我只是再次检查,数据确实很相似,所以唯一的问题是列名。这太棒了,唯一的问题是我需要行索引是单个数据帧中的索引。不确定这是否是您所指的要进行的更改。再次感谢@SanHaKim是的,这绝对是其中一个变化,不敢相信我错过了,lolHi,我刚刚发现了行名的问题。非常感谢,我真的很感激。有没有办法让我给你投票或什么的?@SanHaKim,真是好笑。你可以接受我的答案,尽管它还真的不完整。有关投票和接受答案的信息,请参阅。