Найти те же значения из 2 столбцов df python - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть два разных dfs со следующими столбцами:

col1                    col2

0 programming           0 programming
1 chess                 1 python
2 leadership            2 leadership
                        3 abba
                        4 games

Я хочу узнать, какой процент значений col1 присутствует в col2

Для этого я подумалЯ мог бы создать новый df, который будет содержать те же значения, а затем его len до len(col2).Сначала я хочу получить это:

col3

0 programming
1 leadership 

Вот что я пробовал, но я не хочу использовать две for петли

bb=[]
for i in company.col2:
    for b in student.col1:
        if i==b:
            bb.append(i)

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Вы можете использовать pandas.merge для выполнения внутреннего соединения:

def main():

    df = pd.DataFrame(["programming", "chess", "leadership"], columns=["col1"])
    df2 = pd.DataFrame(["programming", "python", "leadership", "abba", "games"], columns=["col2"])
    df3 = df.merge(df2, left_on="col1", right_on="col2", how="inner")
    print(df3["col1"])
0 голосов
/ 15 сентября 2018
>>> df1 = pd.DataFrame(["programming", "chess", "leadership"], columns=["col1"])
>>> df2 = pd.DataFrame(["programming", "python", "leadership", "abba", "games"], columns=["col2"])

Чтобы узнать, какие значения df1['col1'] находятся в df2['col2'], используйте isin. Результатом является логический столбец. Используйте sum, чтобы найти количество значений:

>>> df1['col1'].isin(df2['col2']).sum()

Используйте size, чтобы найти количество элементов в df2 и разделите таким образом:

>>> df1['col1'].isin(df2['col2']).sum() / df2.size
0 голосов
/ 15 сентября 2018

Вы можете использовать понимание списка, попробуйте следующее

list1 = ["programming", "chess", "leadership"]
list2 = ["programming", "python", "leadership", "abba", "games"]
list3 = [value for value in list1 if value in list2] 

list3 = ["программирование", "лидерство"]

В вашем случае использования выможно просто попробовать ниже.

list3 = [value for value in company.col2 if value in student.col1]  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...