[英]How to fill empty column values with another dataframe's value if two other columns have matching values in Pandas?
[英]fill up empty values with same value of another column in pandas dataframe
我有一個如下所示的熊貓數據框:
如何為空單元格填充相同產品類型的相同策略編號?
任何建議將不勝感激。 謝謝
抱歉,我現在要添加示例數據框:
sample = [{'POLICY NUMBER':'','PRODUCT TYPE':'MED'},{'POLICY NUMBER':'','PRODUCT TYPE':'MED'},{'POLICY NUMBER':'433M49763' ,'PRODUCT TYPE':'MED'},{'POLICY NUMBER':'433M86968','PRODUCT TYPE':'MED'},{'POLICY NUMBER':'','PRODUCT TYPE':'TED'}, {'POLICY NUMBER':'566D158635','PRODUCT TYPE':'TED'},{'POLICY NUMBER':'655D158635','PRODUCT TYPE':'TED'},{'POLICY NUMBER':'789D158635', 'PRODUCT TYPE':'TED'}]
pd.DataFrame(樣本)
請注意,空單元格中也包含“”,它們在整個數據框中都不是NaN
添加到上面的問題。 如果我有如上所述的更改的數據幀。 我如何到達以下數據框:
如果每個組只有一個相同類別並且沒有數據,則為空string
s:
df['POLICY NUMBER'] = (df.groupby('PRODUCT TYPE')['POLICY NUMBER']
.transform(lambda x: x[x != ''].iat[0]))
print (df)
POLICY NUMBER PRODUCT TYPE
0 433M86968 MED
1 433M86968 MED
2 433M86968 MED
3 433M86968 MED
4 566D158635 TED
5 566D158635 TED
6 566D158635 TED
7 566D158635 TED
或者,如果可能的話,並非總是空wtrailing whitespaces
,但有時會有wtrailing whitespaces
,需要使用strip
:
df['POLICY NUMBER'] = (df['POLICY NUMBER'].str.strip().groupby(df['PRODUCT TYPE'])
.transform(lambda x: x[x != ''].iat[0]))
print (df)
POLICY NUMBER PRODUCT TYPE
0 433M86968 MED
1 433M86968 MED
2 433M86968 MED
3 433M86968 MED
4 566D158635 TED
5 566D158635 TED
6 566D158635 TED
7 566D158635 TED
排序和轉換last
值的解決方案:
df['POLICY NUMBER'] = (df.sort_values(['PRODUCT TYPE','POLICY NUMBER'])
.groupby('PRODUCT TYPE')['POLICY NUMBER']
.transform('last'))
print (df)
POLICY NUMBER PRODUCT TYPE
0 433M86968 MED
1 433M86968 MED
2 433M86968 MED
3 433M86968 MED
4 566D158635 TED
5 566D158635 TED
6 566D158635 TED
7 566D158635 TED
編輯:您需要用NaN
替換空字符串,然后使用bfill
進行反向向前填充NaN
,而ffill
進行向前填充NaNs:
df['POLICY NUMBER'] = (df['POLICY NUMBER'].str.strip()
.replace('',np.nan)
.groupby(df['PRODUCT TYPE'])
.transform(lambda x: x.bfill().ffill()))
print (df)
POLICY NUMBER PRODUCT TYPE
0 433M49763 MED
1 433M49763 MED
2 433M49763 MED
3 433M86968 MED
4 566D158635 TED
5 566D158635 TED
6 566D158635 TED
7 789D158635 TED
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.