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