Python 数据帧中值之间的交集 问题陈述:

Python 数据帧中值之间的交集 问题陈述:,python,pandas,Python,Pandas,创建新的数据框列,在两个不同的列中显示行值的布尔值1(相交)或0(无相交):row_mods和col_mods。添加另一列以显示这些重叠是什么。如以下示例所示,intersect采用布尔值,common显示相交值 渲染的数据帧是我拥有的,绘制的部分是我正在寻找的: 设置: 如何在两个不同的列上对一行中的两个值执行交集?因为您显然对PANDAS操作很熟悉,所以我只提供Python交集逻辑: common = list(set(row_mods).intersection(set(col_mods

创建新的数据框列,在两个不同的列中显示行值的布尔值1(相交)或0(无相交):
row_mods
col_mods
。添加另一列以显示这些重叠是什么。如以下示例所示,
intersect
采用布尔值,
common
显示相交值

渲染的数据帧是我拥有的,绘制的部分是我正在寻找的:

设置:
如何在两个不同的列上对一行中的两个值执行交集?

因为您显然对PANDAS操作很熟悉,所以我只提供Python交集逻辑:

common = list(set(row_mods).intersection(set(col_mods)))
intersect = len(common) > 0
简单地说,将每个mod列表转换为一个集合,然后使用Python内置的intersection方法。将结果返回到列表中


这解决了您的问题吗?

因为您显然对PANDAS操作很熟悉,所以我只提供Python交集逻辑:

common = list(set(row_mods).intersection(set(col_mods)))
intersect = len(common) > 0
简单地说,将每个mod列表转换为一个集合,然后使用Python内置的intersection方法。将结果返回到列表中

这能解决你的问题吗?

试试这个伴侣:

步骤1,定义函数:

def check_row (row_mods, col_mods):

    common = []

    intersect = 0

    for x in col_mods:

        if x in row_mods:

            intersect = 1
            common.append(x)

    if (intersect == 0):

        common.append(np.nan)

    return (intersect, common)
cs_2['intersect'] = ''
cs_2['common'] = ''

for index in cs_2.index:

    (intersect, common) = check_row(cs_2.loc[index,'row_mods'], cs_2.loc[index,'col_mods'])

    cs_2.loc[index,'intersect'] = intersect
    cs_2.loc[index,'common'] = [x for x in common]
步骤2,应用功能:

def check_row (row_mods, col_mods):

    common = []

    intersect = 0

    for x in col_mods:

        if x in row_mods:

            intersect = 1
            common.append(x)

    if (intersect == 0):

        common.append(np.nan)

    return (intersect, common)
cs_2['intersect'] = ''
cs_2['common'] = ''

for index in cs_2.index:

    (intersect, common) = check_row(cs_2.loc[index,'row_mods'], cs_2.loc[index,'col_mods'])

    cs_2.loc[index,'intersect'] = intersect
    cs_2.loc[index,'common'] = [x for x in common]
希望有帮助!如果它没有投票/检查答案:)

试试这个伴侣:

步骤1,定义函数:

def check_row (row_mods, col_mods):

    common = []

    intersect = 0

    for x in col_mods:

        if x in row_mods:

            intersect = 1
            common.append(x)

    if (intersect == 0):

        common.append(np.nan)

    return (intersect, common)
cs_2['intersect'] = ''
cs_2['common'] = ''

for index in cs_2.index:

    (intersect, common) = check_row(cs_2.loc[index,'row_mods'], cs_2.loc[index,'col_mods'])

    cs_2.loc[index,'intersect'] = intersect
    cs_2.loc[index,'common'] = [x for x in common]
步骤2,应用功能:

def check_row (row_mods, col_mods):

    common = []

    intersect = 0

    for x in col_mods:

        if x in row_mods:

            intersect = 1
            common.append(x)

    if (intersect == 0):

        common.append(np.nan)

    return (intersect, common)
cs_2['intersect'] = ''
cs_2['common'] = ''

for index in cs_2.index:

    (intersect, common) = check_row(cs_2.loc[index,'row_mods'], cs_2.loc[index,'col_mods'])

    cs_2.loc[index,'intersect'] = intersect
    cs_2.loc[index,'common'] = [x for x in common]

希望有帮助!如果没有投票/检查答案:)

没有,对不起。没有。您的建议是在整列之间寻找交叉点。我想检查两列的行交叉点。不,对不起。没有。您的建议是在整列之间寻找交叉点。我想检查两列的行之间的交点。这确实有帮助。我不一定要寻找一种迭代方法,但不管是矢量化还是非矢量化,你的回答让我找到了一个解决方案。我的实现中唯一的区别是,我对行迭代器使用了
iterrows
。感谢您抽出时间阅读、理解并回答我的问题!这确实有帮助。我不一定要寻找一种迭代方法,但不管是矢量化还是非矢量化,你的回答让我找到了一个解决方案。我的实现中唯一的区别是,我对行迭代器使用了
iterrows
。感谢您抽出时间阅读、理解并回答我的问题!