concat
最近在寫資料的時候看到用一個concat函式進行整合,但是下面這段代碼之后就碰上個很奇怪的地方
for i, bag in enumerate(bags):
coure_result = func()
core_df = pd.DataFrame([core_result])
dfs.append(core_df)
df = pd.concat(dfs)
這段代碼首先就是用dfs記錄了每一組資料,最后使用concat函式進行連接,在這之后我希望在特定位置插入一列資料
df_summary = pd.DataFrame(summary, columns = ["summary"])
df.insert(1,"summary",df_summary["summary"])
一共有三種型別的文本,10條資料,在df格式下前面也有索引,而我之前拼接好的內容如下圖:
按理來說運行insert之后,每一行都會對應一個summary里面的欄位,但是最終的運行效果summary里面的內容完全變成同樣的話
這讓我很是奇怪,研究了半天,發現df原來的內容默認索引全都是0,原因是因為在創建和合并DataFrame的時候,concat連接每一個dfs里面的獨立的dataframe時,每個DataFrame都有自己獨立的索引,從0開始,在運行concat函式時會保留原始的索引,即使在最終的DataFrame里面重復了,因此,再重新插入新的有index的df時,會根據索引位置插入資料,而并不是像Excel那樣直接插入,
所以需要先改掉原先的索引才能插入
df = pd.concat(dfs).reset_index(drop = True)
意味著重置索引后丟棄掉原來的索引,如果不把drop改成True,那么原來的索引將會變成新的列,
這樣的話,df的內容和我要插入內容的索引就可以對應上了,在進行插入的時候就可以了
本文來自博客園,作者:ivanlee717,轉載請注明原文鏈接:https://www.cnblogs.com/ivanlee717/p/17514757.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/556294.html
標籤:Python
上一篇:【python爬蟲案例】用python爬豆瓣電影TOP250排行榜!
下一篇:返回列表