簡體   English   中英

熊貓:在連接 2 行字符串后刪除行

[英]Panda: Dropping rows after concat string of 2 rows

我喜歡檢查一個列,如果列日期與下一個相同,則合並備注列。 日期行可能超過 2。

我當前的代碼卡在這個階段:

df = {'date': ['02-Jan','02-Jan','03-Jan','03-Jan','03-Jan','04-Jan','05-Jan'],
       'remarks':['a','b','c','d','e','f','g']}
df = pd.DataFrame(df)
for eachRow in range(len(df)):
    print("row" , eachRow)
    try:
        if(df['date'][eachRow] == df['date'][eachRow + 1]):
            df['remarks'][eachRow] = df['remarks'][eachRow] + df['remarks'][eachRow + 1]
            print('drop', eachRow+1)
            df = df.drop(eachRow + 1) 
            print(df)
    except:
        print(df)

我的輸出電流是。 我注意到當我有超過 2 行具有相同日期的連續行,並且當我刪除第 3 行時,我無法檢查第 2 行和第 4 行,因為我的 eachRow 指針已移動到第 3 行並且第 3 行沒有任何內容可以比較。 如果我選擇不刪除下一行,我將有重復的行和不正確的注釋。 我該怎么辦?

row 0
drop 1
     date remarks
0  02-Jan      ab
2  03-Jan       c
3  03-Jan       d
4  03-Jan       e
5  04-Jan       f
6  05-Jan       g
row 1
     date remarks
0  02-Jan      ab
2  03-Jan       c
3  03-Jan       d
4  03-Jan       e
5  04-Jan       f
6  05-Jan       g
row 2
drop 3
     date remarks
0  02-Jan      ab
2  03-Jan      cd
4  03-Jan       e
5  04-Jan       f
6  05-Jan       g
row 3
     date remarks
0  02-Jan      ab
2  03-Jan      cd
4  03-Jan       e
5  04-Jan       f
6  05-Jan       g
row 4
row 5
row 6
     date remarks
0  02-Jan      ab
2  03-Jan      cd
4  03-Jan       e
5  04-Jan       f
6  05-Jan       g

一個簡單的更改可以保存它:

而不是刪除下一行( eachRow+1 ),刪除當前行( eachRow ):

df = df.drop(eachRow) ;

同時,您必須注意必須在下一行進行連接,因為您正在刪除當前行。 因此,將該行更改為:

df['remarks'][eachRow+1] = df['remarks'][eachRow] + df['remarks'][eachRow + 1]

df = {'date': ['02-Jan','02-Jan','03-Jan','03-Jan','03-Jan','04-Jan','05-Jan'],
       'remarks':['a','b','c','d','e','f','g']}
df = pd.DataFrame(df)
for eachRow in range(len(df)):
    print("row" , eachRow)
    try:
        if(df['date'][eachRow] == df['date'][eachRow + 1]):
            df['remarks'][eachRow+1] = df['remarks'][eachRow] + df['remarks'][eachRow + 1]
            print('drop', eachRow)
            df = df.drop(eachRow)
            print(df)
    except:
        print(df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM