我在以下各列中有两个不同的df:
list
我想找出col1 col2
0 programming 0 programming
1 chess 1 python
2 leadership 2 leadership
3 abba
4 games
中出现的col1
值的百分比
为此,我认为我可以构建一个新的df,它将包含相同的值,然后包含其col2
至len
。首先,我想得到这个:
len(col2)
这是我尝试过的方法,但是我不想使用两个col3
0 programming
1 leadership
循环
for
答案 0 :(得分:1)
>>> 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
答案 1 :(得分:0)
您可以使用列表理解,请尝试以下
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]
答案 2 :(得分:0)
您可以使用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"])