第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

向 100K+ 數(shù)據(jù)集添加行

向 100K+ 數(shù)據(jù)集添加行

守著一只汪 2022-06-22 16:27:03
我對 Python 和數(shù)據(jù)科學(xué)真的很陌生。我有一個包含 30 列的 100K+ CSV 數(shù)據(jù)集。如果滿足某些條件,目標(biāo)是向數(shù)據(jù)集添加一些行。為了方便起見,假設(shè)我只有三列名為“A”、“B”和“C”,A 和 B 的類型是整數(shù)。C 是一個字符串。我們不用擔(dān)心 B 和 C,因為我會把所有 B 列的值都設(shè)為 0,然后我會計算 C。所以這里是我的“想象”數(shù)據(jù)集的快速視圖:   A _____|  1  ||  4  ||  3  ||  7  |_______我在 Dataframe 中解析了我的數(shù)據(jù)集,并按“A”的值對其進(jìn)行了排序。所以,現(xiàn)在,它看起來像這樣:   A _____|  1  ||  3  ||  4  ||  7  |_______現(xiàn)在,我想遍歷我的 DataFrame 并檢查我是否在兩行之間缺少一些數(shù)字并將它們添加到數(shù)據(jù)框中,即:如果 A[i+1]-A[i]>1,我想添加 A[i]他們之間+1。   A _____|  1  ||  2  ||  3  ||  4  ||  5  ||  6  ||  7  |_______據(jù)我所知,我有以下選擇:將我的新行直接附加到新的數(shù)據(jù)框。我不知道為什么,但我認(rèn)為這不是一個好主意。如果我是對的,你們能解釋一下為什么嗎?如果我錯了,你們能解釋為什么嗎?將我的新行附加到一個列表中,從該列表中創(chuàng)建一個數(shù)據(jù)框,然后將我的舊數(shù)據(jù)框與我的新數(shù)據(jù)框“加入”。Idk,有什么建議嗎?我現(xiàn)在的主要問題是,處理大型 DataFrame 很麻煩,而且我的腳本需要很長時間才能完成這項工作。你們能引導(dǎo)我找到處理如此大量數(shù)據(jù)的“正確方法”嗎?順便說一句,這是我為選擇 n°2 所做的代碼:df=pd.read_csv("dataset.csv")df.sort_values(by="A")L=[]for i in range (0, len(df)-1):    actual=df.at[i, 'A']    next=df.at[(i+1), 'A']    diff=actual-next-1    for j in range(1, diff):        L.append(actual+1)        actual +=1df=pd.DataFrame(data=L, columns=list(df))df.to_csv("my_output.csv", sep=',')
查看完整描述

2 回答

?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗 獲得超10個贊

reindex

設(shè)置'A'為索引并將reindex為我們指定的每個值創(chuàng)建一行,使用range. 所有其他列的缺失單元格是(分別為浮點數(shù)和對象)。無需在reindex.


df = pd.DataFrame({'A': [4, 3, 1, 7], 

                   'B': [10, 11, 12, 13], 

                   'C': ['B1', 'B2', 'B3', 'B4'],

                   'D': [True, False, True, True]})


idx = range(df.A.min(), df.A.max()+1)  # All 'A' values you want to represent

df.set_index('A').reindex(idx).reset_index()

#   A     B    C      D

#0  1  12.0   B3   True

#1  2   NaN  NaN    NaN

#2  3  11.0   B2  False

#3  4  10.0   B1   True

#4  5   NaN  NaN    NaN

#5  6   NaN  NaN    NaN

#6  7  13.0   B4   True

如果'A'是重復(fù)的,那么我們需要一個outer連接來完成同樣的事情。


(df.set_index('A')

   .join(pd.DataFrame(index=pd.Index(idx, name='A')), how='outer')

   .reset_index())


查看完整回答
反對 回復(fù) 2022-06-22
?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗 獲得超6個贊

讓我們重新創(chuàng)建您的 DataFrame 并通過以下方式對其進(jìn)行索引A:


rows = [1, 4, 3, 7]

df = pd.DataFrame({"A": rows, "B": [1] * len(rows), "C": ["string"] * len(rows)})

N = df.A.max()

df = df.set_index("A")

一種選擇是創(chuàng)建一個新的 DataFrame,其中填充所有可能的條目,A并在 中使用零B:


complete_df = pd.DataFrame({"A": range(1, N + 1), "B": [0] * N})

complete_df = complete_df.set_index("A")

現(xiàn)在您可以使用 in 的值進(jìn)行更新df并刪除 on 的索引A:


complete_df = df.combine_first(complete_df)

complete_df = complete_df.reset_index()

這樣,您將保留所有列,在B所有新行的列中置零,并NaN在所有其他列中置零。


分享

編輯

跟隨

于 2019 年 10 月 


查看完整回答
反對 回復(fù) 2022-06-22
  • 2 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號