在Pandas中将.append替换为.concat [重复]

ogsagwnx  于 2023-05-05  发布在  其他
关注(0)|答案(1)|浏览(170)

此问题已在此处有答案

DataFrame object has no attribute append(2个答案)
4天前关闭。
我正在尝试修复我在下面发布的代码。它工作正常,我的CSV文件按预期导出,但我在终端中收到警告:“frame.append方法已被弃用,并将在未来版本中从pandas中删除。请改用pandas.concat。”
我回顾了文档中的示例和Stack Overflow上的另一个线程,但我在让concat实际工作时遇到了麻烦。它不接受数据框对象,所以我尝试转换为列表,但我很难让事情像现在这样工作。谁能帮我把这段代码替换成更符合未来的concat方法?

import pandas as pd

result = pd.DataFrame()

for i in range (2013,2023):
    year = str(i)
    url = 'https://www.hockey-reference.com/leagues/NHL_'+year+'_skaters.html'

    df = pd.read_html(url,header=1)[0]
    df['year'] = year
    result = result.append(df, sort=False)

result = result[~result['Age'].str.contains("Age")]
result = result.reset_index(drop=True)

result.to_csv('hdb_data.csv',index=False)
pcww981p

pcww981p1#

实际上,它已经在2.0.0中被删除了(参见 hereGH35407):

list_dfs = []

for year in range (2013, 2023):
    url = f"https://www.hockey-reference.com/leagues/NHL_{year}_skaters.html"
    list_dfs.append(pd.read_html(url, header=1)[0].assign(year=year))

result = (pd.concat(list_dfs).loc[lambda x: ~x["Age"].str.contains("Age")]
              .reset_index(drop=True))

result.to_csv("hdb_data.csv", index=False)

输出:

print(result)

         Rk             Player Age   Tm Pos  ...  HIT FOW FOL    FO%  year
0         1  Justin Abdelkader  25  DET  LW  ...  120  65  60   52.0  2013
1         2          Luke Adam  22  BUF  LW  ...    3   1   0  100.0  2013
2         3        Craig Adams  35  PIT  RW  ...  107  51  47   52.0  2013
...     ...                ...  ..  ...  ..  ...  ...  ..  ..    ...   ...
10370  1002          Artem Zub  26  OTT   D  ...  155   0   0    NaN  2022
10371  1003    Mats Zuccarello  34  MIN  LW  ...   36  21  34   38.2  2022
10372  1004       Jason Zucker  30  PIT  LW  ...   66   4  11   26.7  2022

[10373 rows x 29 columns]

相关问题