[英]Fill new pandas df based off values in another df
我是新來的,所以請不要對我太苛刻::)
見下圖!
我正在嘗試根據 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.contains
、 Series.mask
和Series.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.