我有两个数据帧.在与第二个数据帧(由用户提供)进行比较后,我想删除第一个数据帧(默认)中的值

def_df = pd.DataFrame([['alpha','beta'],['gamma','delta']],index=['ab_plot',gd_plot])

               0    1
ab_plot     alpha   beta
gd_plot     gamma   delta
rk_plot     ray     kite


user_df = pd.DataFrame([10,20],index=['alpha','beta'])

        0
alpha   10
beta    20

I want to compare two dataframes and know the possible plots for given user data.

预期答案

['ab_plot'] # since user has provided data for `'alpha','beta'`

我的方法是:

posble_plots_with_user_data = [True for x in posble_plots.values if x in df.columns]

目前的答案:

TypeError: unhashable type: 'numpy.ndarray'

推荐答案

如果需要测试所有值如果与user_df中至少一个索引值匹配,则将DataFrame.isinDataFrame.any和筛选器def_df.index一起使用:

#changed data
def_df = pd.DataFrame([['alpha','beta'],['gamma','beta']],index=['ab_plot','gd_plot'])

user_df = pd.DataFrame([10,20],index=['alpha','beta'])

posble_plots_with_user_data = def_df.index[def_df.isin(user_df.index).any(axis=1)].tolist()
print (posble_plots_with_user_data)
['ab_plot', 'gd_plot']

如果需要每行具有匹配所有值的行,请使用DataFrame.all:

posble_plots_with_user_data = def_df.index[def_df.isin(user_df.index).all(axis=1)].tolist()
print (posble_plots_with_user_data)
['ab_plot']

Details:

print (def_df.isin(user_df.index))
             0     1
ab_plot   True  True
gd_plot  False  True

Python相关问答推荐

可变参数数量的重载类型(args或kwargs)

输出中带有南的亚麻神经网络

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

NP.round解算数据后NP.unique

基于字符串匹配条件合并两个帧

如何使用它?

对所有子图应用相同的轴格式

如何在给定的条件下使numpy数组的计算速度最快?

计算每个IP的平均值

Pandas—在数据透视表中占总数的百分比

跳过嵌套JSON中的级别并转换为Pandas Rame

使用Python异步地持久跟踪用户输入

如何重新组织我的Pandas DataFrame,使列名成为列值?

为什么dict. items()可以快速查找?

设置索引值每隔17行左右更改的索引

删除另一个div中的特定div容器

如何在微调Whisper模型时更改数据集?

具有数值数组问题的递归矩阵构造(广播?)

如何使用Pillow基于二进制掩码设置PNG的RGB值

如何在上一次迭代中跳过某些内容(&q;)?