'Not able to insert a string to a position in a dataframe

I'm trying to iterate over two data frames with different lenghts in order to look for some data in a string. If the data is found, I should be able to add info to a specific position in a data frame. Here is the code.

In the df data frame, I created an empty column, which is going to receive the data in the future.

I also have the df_userstory data frame. And here is where I'm looking for the data. So, I created the code below.

Both df['Issue key'][i] and df_userstory['parent_of'][i] contains strings.

df['parent'] = ""

for i in df_userstory.index:
    if df['Issue key'][i] in df_userstory['parent_of'][i]:
        item = df_userstory['Issue key'][i]
        df['parent'].iloc[i] = item

df

For some reason, when I run this code the df['parent'] remains empty. I've tried different approaches, but everything failed.

I've tried to do the following in order to check what was happening:

df['parent'] = ""

for i in df_userstory.index:
    if df['Issue key'][i] in df_userstory['parent_of'][i]:
        print('True')

Nothing was printed out.

I appreciate your help here.

Cheers



Solution 1:[1]

Iterating over each index will lose all the performance benefits of using Pandas dataframe. You should use dataframe merge.

# select the two columns you need from df_userstory
df_us = df_userstory.loc[:, ['parent_of', 'Issue key']]

# rename to parent, that will be merged with df dataframe
df_us.rename(columns={'Issue key': 'parent'}, inplace=True).drop_duplicates()

# merge
df = df.merge(df_us, left_on='Issue key', right_on='parent_of', how='left')

Ref: Pandas merge

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Kumar