Search for column values in another column and assign a value from the next column from the row found to another column

喜你入骨 提交于 2021-02-11 17:39:40

问题


I am working with Pandas and am trying to populate a column with the values in another column, where another column contains the same value as in a specific column.

Example:

>>> df = pd.DataFrame({'StringToCheck': ['10T','125T', '',''],
                   'FromNumber' :['','','',''],
                   'ToNumber' : ['','','',''],
                   'CheckStringHere': ['AAA_ER', 'FGGR_DBC', '10T', '125T'],
                   'AssociatedValue1': ['','','56','16'],
                   'AssociatedValue2': ['','','58','24']})
>>> df
  StringToCheck FromNumber ToNumber CheckStringHere AssociatedValue1 AssociatedValue2
0           10T                              AAA_ER                                  
1          125T                            FGGR_DBC                                  
2                                               10T               56               58
3                                              125T               16               24

I want to search for each value in StringToCheck inside the CheckStringHere column, and assign the value from the AssociatedValue1 on the row found to the FromNumber column but on the row where the value in StringToCheck is.

I have tried

>>> df['FromNumber'] = df[df['CheckStringHere'].isin(df['StringToCheck'])]['AssociatedValue1']
>>> df
  StringToCheck FromNumber ToNumber CheckStringHere AssociatedValue1 AssociatedValue2
0           10T        NaN                   AAA_ER                                  
1          125T        NaN                 FGGR_DBC                                  
2                       56                      10T               56               58
3                       16                     125T               16               24

As you see, the values have been added in FromNumber column, but on the row where the values from StringToCheck were found in CheckStringHere, I need to have

  StringToCheck FromNumber ToNumber CheckStringHere AssociatedValue1 AssociatedValue2
0           10T        56                    AAA_ER                                  
1          125T        16                  FGGR_DBC                                  
2                                               10T               56               58
3                                              125T               16               24

Next, if it is possible to get the values from AssociatedValue2 to ToNumber column simultaneously, it would be a real treat.


回答1:


You can try creating a dictionary from columns ['CheckStringHere','AssociatedValue1'] and replace values from StringToCheck column:

d = dict(df[['CheckStringHere','AssociatedValue1']].to_numpy())
df['FromNumber'] = df['StringToCheck'].replace(d)
#or df['FromNumber'] = df['StringToCheck'].map(d).fillna(df['FromNumber'])

print(df)
  StringToCheck FromNumber ToNumber CheckStringHere AssociatedValue1  \
0           10T         56                   AAA_ER                    
1          125T         16                 FGGR_DBC                    
2                                               10T               56   
3                                              125T               16   

  AssociatedValue2  
0                   
1                   
2               58  
3               24  


来源:https://stackoverflow.com/questions/62136848/search-for-column-values-in-another-column-and-assign-a-value-from-the-next-colu

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!