简体   繁体   中英

Checking for unique values in Pandas Data frame column and crossreferenceing with a second column

I have a pandas dataframe that looks something like below.

I want to check the values in User ID to see if it is unique. If so, then I then want to check the License Type column to see if it is a full trial then return a 1 in a new column 'Full_direct'. Else, i would return a 0 in the 'full_direct' column.

    Date         **User ID**          Product Name  License Type    Month   
0   2017-01-01  10431046623214402832 90295d194237   trial       2017-01 
1   2017-07-09  246853380240772174  29125b243095    trial       2017-07 
2   2017-07-07  13685844038024265672    47423e1485  trial       2017-07 
3   2017-02-12  2475366081966194134 202400c85587    full        2017-02 
4   2017-04-08  761179767639020420  168300g168004   full        2017-04 

I made this attempt but wasnt able to iterate through the dataframe in this manner. I was hoping to see if someone could advise. Thanks!

for values in main_df['User ID']:
    if values.is_unique and main_df['License Type'] == 'full':
        main_df['Full_Direct'] = 1
    else:
        main_df['Full_direct'] = 0

We do not need for loop here, let us try duplicated

df['Full_direct'] = ((~df['User ID'].duplicated(keep=False)) & (df['License Type'] == 'full')).astype(int)

Fix your code

for values in df.index:
      if df['UserID'].isin([df.loc[values,'User ID']]).sum()==1 and df.loc[values,'License Type'] == 'full':
           df.loc[values,'Full_direct'] = 1
      else:
           df.loc[values,'Full_direct'] = 0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM