Python DataFrame-根据另一个数据框中的值选择数据框行

码头

我正在努力解决与数据框相关的问题。共有两个数据帧df和dff,如下所示

data = np.array([['', 'col1', 'col2'],
            ['row1', 1, 2],
            ['row2', 3, 4]])
df = pd.DataFrame(data=data[1:,1:].astype(int), index=data[1:,0],columns=data[0,1:])


filters=np.array([['', 'col1', 'col2'],
                 ['row1', 1, 1],
                 ['row2', 1, 2],
                 ['row3', 3, 2]])
dff = pd.DataFrame(data=filters[1:,1:].astype(int), index=filters[1:,0],columns=filters[0,1:])

我希望从df中选择行,使它们的col2值属于可在dff中找到的具有匹配col1值的值列表。例如,对于col1等于1,该列表应为[1、2],对于col1等于2,该列表为[2]。

我最好的解决办法是

df1 = df[df['col2'].isin(dff[dff['col1']==df['col1']]['col2'])]

但这导致

ValueError: Can only compare identically-labeled Series objects

任何帮助,将不胜感激。非常感谢。

拉斐尔克

据我了解,您可以简单地 aggregate

ndf = dff.groupby('col1').agg(lambda x: list(x)).reset_index()

    col1   col2
0   1      [1, 2]
1   3      [2]

并过滤掉col1不在其中的任何值df

ndf[ndf.col1.isin(df.col1)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据Python中的另一个数据框选择一个数据框的行

从另一个数据框进行Python DataFrame多行过滤

Python根据另一个数据框值中存在的列索引填充数据框值

Python根据另一个数据框中的列值匹配列名

根据另一个数据框中的值更改 Python 数据框中的值

根据python中另一个数据框的2列过滤数据框

Python-根据另一个数据框匹配替换数据框中的值

根据另一个数据框python熊猫替换列值-更好的方法?

Python Pandas:根据另一个数据框的类别值创建新列

Python / Pandas:根据另一个数据框过滤和组织数据框的行和列

根据Python中另一个数据框的列表更新具有更早日期的值

Python [pandas]:通过另一个数据框的索引选择某些行

Python Pandas根据在另一个数据框中的查找将列添加到数据框

根据另一个数据框中的标签以最小距离标记数据框中的一行 - Python

Python Pandas:根据条件使用一个数据框的值填充另一个数据框的值

Python Pandas根据另一个列中的总数从另一个dataFrame中选择值

根据R中另一个数据框中的元数据信息合并Dataframe列

从另一个数据框中获取的列中的python总和值

从另一个数据框中的一个数据框中找到一个值并打印该行(Python)

Python Pandas从另一个数据框更新一个数据框值

在python,pandas中使用另一个数据框的多列选择一个数据框的行

Python Pandas:一个数据框中的列的行值变成另一数据框中的列

根据Python中另一个数据框的列对一个数据框的行进行排序(重复的列)

根据另一个数据框中的日期计算一个数据框的数量总和(Python)

Python Pandas数据框-在另一个数据框中优化对ID的搜索

尝试将一个数据框中的值与另一个数据框中的值进行匹配(python)

Python:无循环地从另一个数据框中选择一个数据框中的多个列

Python pandas数据框:数据框到另一个数据框

使用pandas python根据来自另一个数据框的数据更新数据框