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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何修復(fù)混淆的索引

如何修復(fù)混淆的索引

幕布斯6054654 2023-04-18 10:45:12
我在數(shù)據(jù)框中遇到索引問(wèn)題。我有一個(gè)看起來(lái)像這樣的數(shù)據(jù):df1 = pd.DataFrame({'Name': ['ABC-123', 'DEF-456', 'GHI-789', 'JKL-321'],'A1': [111, 222, 333, 444],'A2': [555, 666, 777, 888],'A3': [999, 123, 456, 789],'A4': [101, 202, 303, 404],'QQ': [1.3, 2.5, 3.7, 4.9]});我正在處理數(shù)據(jù),在某些時(shí)候我創(chuàng)建了一個(gè)類似的數(shù)據(jù)框,其中包含原始數(shù)據(jù)中的一些數(shù)據(jù),但是某處發(fā)生了數(shù)據(jù)索引的混合,因此新數(shù)據(jù)如下所示:df2 = pd.DataFrame({'A1': [444, 222, 111, 333],'A2': [888, 666, 555, 777],'A3': [789, 123, 999, 456],'A4': [404, 202, 101, 303]});行中的數(shù)據(jù)沒(méi)問(wèn)題,只是索引錯(cuò)誤,所以我需要新的數(shù)據(jù)框,但是第二個(gè)數(shù)據(jù)框中的行索引與第一個(gè)數(shù)據(jù)框中的索引匹配,例如第一行的數(shù)字為 444 、888、789 和 404 應(yīng)該有索引 3,而不是 0。我該怎么做?我應(yīng)該將第二個(gè)數(shù)據(jù)幀的每一行與第一個(gè)數(shù)據(jù)幀進(jìn)行比較,如果第二個(gè)數(shù)據(jù)幀中的行與第一個(gè)數(shù)據(jù)幀的一行中的數(shù)據(jù)匹配,則將第二個(gè)數(shù)據(jù)幀中該行的索引更改為匹配行的索引第一個(gè)數(shù)據(jù)框的,但我不知道該怎么做。有什么建議么?來(lái)自評(píng)論的更新:我需要那些索引,但我需要它們,所以它們匹配,即第二個(gè)表中的索引跟在第一個(gè)表中的索引之后。另外,我不能單獨(dú)使用任何列,因?yàn)?non 是唯一的。只有整行是唯一的。我可能應(yīng)該補(bǔ)充說(shuō),這兩個(gè)表不是真實(shí)的,而是作為示例創(chuàng)建的,我現(xiàn)在看到 ID 列具有誤導(dǎo)性。我已將其更改為 AA,以避免混淆。所以,正如我上面所說(shuō),列不是唯一的,只有整個(gè)行是唯一的。真實(shí)的表格有超過(guò) 200 列和數(shù)千行。我無(wú)法包含代碼,因?yàn)樗执笥謴?fù)雜,而且我不知道混淆發(fā)生在哪里。這也是無(wú)關(guān)緊要的,因?yàn)槲艺谡務(wù)摰臄?shù)據(jù)已經(jīng)收集并保存在 CSV 文件中,所以這兩個(gè)數(shù)據(jù)幀實(shí)際上是從這些文件中導(dǎo)入的。這是我的問(wèn)題。我無(wú)法重新運(yùn)行原始代碼,即使我修復(fù)了它,因?yàn)檫@需要兩周的時(shí)間。我必須修復(fù)第二個(gè)數(shù)據(jù)幀中的索引,我懷疑如果知道該怎么做的話并沒(méi)有那么復(fù)雜。正如我所說(shuō),行中的數(shù)據(jù)很好,只是索引混淆了不,它只是這東西的一個(gè)名字,其余的數(shù)據(jù)都是關(guān)于。索引是指數(shù)據(jù)幀索引,因?yàn)樗窃趧?chuàng)建數(shù)據(jù)幀時(shí)由 pandas 默認(rèn)創(chuàng)建的。整個(gè)問(wèn)題是,我通過(guò)從 CSV 文件導(dǎo)入數(shù)據(jù)創(chuàng)建了第一個(gè)數(shù)據(jù)幀,對(duì)該數(shù)據(jù)做了一些非常耗時(shí)的工作,并將結(jié)果導(dǎo)出到另一個(gè) CSV 文件。稍后我導(dǎo)入第二個(gè) CSV 文件進(jìn)行分析時(shí),我發(fā)現(xiàn)具有相同數(shù)據(jù)的行的索引不匹配。所以現(xiàn)在我必須修復(fù)索引,否則我將失去大約兩周的工作是的,它是行和列的子集。數(shù)據(jù)應(yīng)該是一樣的,只是索引混淆了。如果我可以將 df2 的每一行與 df1 進(jìn)行比較,找出 df1 中該行數(shù)據(jù)的索引是什么,然后更改 df2 中該行的索引,這將解決問(wèn)題。我只需要 df2 中的行索引與 df1 的相關(guān)行索引相匹配。df2 索引是混合的。df1 中的索引與兩個(gè)數(shù)據(jù)幀中的索引一樣。不,df2 只有 df1 的一些列和 df1 的一些行,但數(shù)據(jù)將在它們之間匹配。順序不同,這意味著索引不同,如果相同的話。但我想有可能對(duì)行進(jìn)行排序,索引沒(méi)有按順序排列。
查看完整描述

1 回答

?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

  • pandas.concat兩個(gè)數(shù)據(jù)框

    • concat兩個(gè)數(shù)據(jù)框,但僅在兩個(gè)數(shù)據(jù)框的列上

    • 連接的順序很重要,df1需要放在第一位

    • df1將帶來(lái)不在的行df2

  • 用于.duplicated創(chuàng)建遮罩

    • 應(yīng)用蒙版,這將刪除多余的行

    • dfc現(xiàn)在將只有重復(fù)的行,并且來(lái)自的所有行都df1將排在第一位

    • df1和之間的所有匹配行將df2True,但來(lái)自的額外行將df1False

    • 最后,.drop_duplicateswithkeep='first'將刪除 底部的所有重復(fù)項(xiàng),從而僅保留具有正確索引的dfc行。df1

import pandas as pd


# concat dataframes

dfc = pd.concat([df1[df2.columns], df2])


# drop non-duplicate rows and then drop duplicates, but keep the 1st

df2_correct_indices = dfc[dfc.duplicated(keep=False)].drop_duplicates(keep='first')


# display(df2_correct_indices)


    A1   A2   A3   A4

0  111  555  999  101

1  222  666  123  202

2  333  777  456  303

3  444  888  789  404

使用的示例數(shù)據(jù)

df1

df1 = pd.DataFrame({'Name': ['ABC-123', 'DEF-456', 'GHI-789', 'JKL-321', 'not_in_df2'],

                    'A1': [111, 222, 333, 444, 1000],

                    'A2': [555, 666, 777, 888, 1000],

                    'A3': [999, 123, 456, 789, 1000],

                    'A4': [101, 202, 303, 404, 1000],

                    'QQ': [1.3, 2.5, 3.7, 4.9, 1000]})


         Name    A1    A2    A3    A4      QQ

0     ABC-123   111   555   999   101     1.3

1     DEF-456   222   666   123   202     2.5

2     GHI-789   333   777   456   303     3.7

3     JKL-321   444   888   789   404     4.9

4  not_in_df2  1000  1000  1000  1000  1000.0

df2

df2 = pd.DataFrame({'A1': [444, 222, 111, 333],

                    'A2': [888, 666, 555, 777],

                    'A3': [789, 123, 999, 456],

                    'A4': [404, 202, 101, 303]})


    A1   A2   A3   A4

0  444  888  789  404

1  222  666  123  202

2  111  555  999  101

3  333  777  456  303


查看完整回答
反對(duì) 回復(fù) 2023-04-18
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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