为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建一个空数据框并在循环中不断向其中插入数据?

如何创建一个空数据框并在循环中不断向其中插入数据?

HUWWW 2023-07-18 15:42:26
我从网站上抓取了一些表格数据。网站上的实际表格如下所示 -我使用 beautifulsoup 来获取这种格式的数据 -[<td class="TableHeadingLeft" width="175">                        Team                    </td>, <td class="TableHeadingRight" width="35">                        Mat                    </td>, <td class="TableHeadingRight" width="35">                        Won                    </td>, <td class="TableHeadingRight" width="35">                        Lost                    </td>, <td class="TableHeadingRight" width="35">                        Tied                    </td>, <td class="TableHeadingRight" width="35">                        N/R                    </td>, <td class="TableHeadingRight" width="45">                        Points                    </td>, <td class="TableHeadingRight" width="55">                        Net R/R                    </td>, <td class="TableHeadingRight" width="75">                        For                    </td>, <td class="TableHeadingRight" width="75">                        Against                    </td>, <td align="left"> <a class="LinkOff" href="MatchList.asp?s=2019&amp;t=MIN">Mumbai Indians</a> </td>, <td align="right">                             14                          </td>, <td align="right">                        9                           </td>, <td align="right">                        5                           </td>, <td align="right">                        0                           </td>, <td align="right">                        0                           </td>, <td align="right">                        18                          </td>, <td align="right">                        +0.421                          </td>, <td align="right">                        2380/275.1                          </td>, <td align="right">                        2282/277.2                          </td>, <td align="left">
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

有一种简单的方法可以从列表列表创建数据框。


代码 :


ll = []

for data in table_data.find_all('td'):

    ll.append(''.join(data.text.split()))  


n = 10

final = [ll[i:i + n] for i in range(0, len(ll), n)]

col = final [0]

df = pd.DataFrame(final) 

df.columns = df.iloc[0]

df = df.drop(df.index[0])

df

ll是表数据中的列表的列表。


final正如您在列中提到的那样,将其分为ll10 列


最后两行是将第一行作为列名,因为我们刚刚创建了一个数据框而没有给出任何列名。


查看完整回答
反对 回复 2023-07-18
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

将表数据设置为一维列表后

table_data_list = [''.join(i.text.split() for i in table_data.find_all('td')]

使用 numpy reshape 将数据转换为 2D

df = pd.DataFrame(np.array(table_data_list).reshape(-1,10))


查看完整回答
反对 回复 2023-07-18
?
GCT1015

TA贡献1827条经验 获得超4个赞

使用pd.concat


import pandas as pd 


col_name = ['Team','Mat','Won','Lost','Tied','N/R','Points','NetR/R','For','Against']


# Main dataframe

df = pd.DataFrame(data=None, columns=col_name)


# df1 is the data frame that you want to concat in your original data frame


df = pd.concat([df, df1])


查看完整回答
反对 回复 2023-07-18
  • 3 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信