簡體   English   中英

根據另一個df中的值填充新的pandas df

[英]Fill new pandas df based off values in another df

我是新來的,所以請不要對我太苛刻::)

見下圖!

打印屏幕:df['Datan]

我正在嘗試根據 df['Datan'] 中的值創建一個新的 dataframe ( df['New_df'] df['Datan'] ,以便df['New_df']在字符串所在的行上等於df['Datan'] ['Datan'] #SRU出現。 如果字符串不在df['Datan']中,我希望df['New_df'] “保留”上面行的值(其中包含#SRU字符串)。

請參閱下面的 df 我正在嘗試做的事情。

                                          Datan          New_df
                                 #SRU 1512 7251  #SRU 1512 7251
   #KONTO 1513 "Kundfordringar - delad faktura"  #SRU 1512 7251
                                 #SRU 1513 7251  #SRU 1513 7251
   #KONTO 1519 "Nedskrivning av kundfordringar"  #SRU 1513 7251
                                 #SRU 1519 7251  #SRU 1519 7251

我一直在嘗試將 for 循環與 if 語句結合起來,特別是使用 apply 方法,但到目前為止還沒有找到解決方案。 無法在此處的任何其他線程中找到此特定問題。

使用Series.str.containsSeries.maskSeries.ffill的組合:

m = df['Datan'].str.contains(r'#SRU')
df['New_df'] = df['Datan'].mask(~m).ffill()

結果:

# print(df)
                                          Datan          New_df
0                                #SRU 1512 7251  #SRU 1512 7251
1  #KONTO 1513 "Kundfordringar - delad faktura"  #SRU 1512 7251
2                                #SRU 1513 7251  #SRU 1513 7251
3  #KONTO 1519 "Nedskrivning av kundfordringar"  #SRU 1513 7251
4                                #SRU 1519 7251  #SRU 1519 7251

使用str.contains檢查string匹配,然后使用ffill填充na

df['New_df'] = df.Datan.where(df.Datan.str.contains('#SRU')).ffill()
df
   Index                                           Datan            New_df
0     95                                 #SRU 1512 7251    #SRU 1512 7251
1     96   #KONTO 1513 "Kundfordringar - delad faktura"    #SRU 1512 7251
2     97                                 #SRU 1513 7251    #SRU 1513 7251
3     98   #KONTO 1519 "Nedskrivning av kundfordringar"    #SRU 1513 7251
4     99                                 #SRU 1519 7251    #SRU 1519 7251

暫無
暫無

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

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