df = pd.DataFrame({'a':['x','x','x','x','x','y','y','y','y','y'],'b':['z','z','z','w','w','z','z','w','w','w'],'c':['c1','c2','c3','c1','c3','c1','c3','c1','c2','c3'],'d':range(1,11)})
a b c d
0 x z c1 1
1 x z c2 2
2 x z c3 3
3 x w c1 4
4 x w c3 5
5 y z c1 6
6 y z c3 7
7 y w c1 8
8 y w c2 9
9 y w c3 10
对于
例如,在
a b c d
0 x z c1 1
2 x z c3 3
3 x w c1 4
4 x w c3 5
5 y z c1 6
6 y z c3 7
7 y w c1 8
9 y w c3 10
让我们尝试透视表,然后删除
all_data =(df.pivot(index=['a','b'], columns='c', values='c')
.loc[:, lambda x: x.notna().all()]
.columns)
df[df['c'].isin(all_data)]
输出:
a b c d
0 x z c1 1
2 x z c3 3
3 x w c1 4
4 x w c3 5
5 y z c1 6
6 y z c3 7
7 y w c1 8
9 y w c3 10
这里有一个办法。获取每个组的唯一列表,然后使用
from functools import reduce
out = df[df['c'].isin(reduce(np.intersect1d,df.groupby(['a','b'])['c'].unique()))]
细目:
s = df.groupby(['a','b'])['c'].unique()
common_elements = reduce(np.intersect1d,s)
#Returns :-> array(['c1', 'c3'], dtype=object)
out = df[df['c'].isin(common_elements )]#.copy()
a b c d
0 x z c1 1
2 x z c3 3
3 x w c1 4
4 x w c3 5
5 y z c1 6
6 y z c3 7
7 y w c1 8
9 y w c3 10
让我们使用
组中的唯一元素:
s = df['a'] + ',' + df['b'] # combination of a, b
m = s.groupby(df['c']).transform('nunique').eq(s.nunique())
df[m]
a b c d
0 x z c1 1
2 x z c3 3
3 x w c1 4
4 x w c3 5
5 y z c1 6
6 y z c3 7
7 y w c1 8
9 y w c3 10
我有两个数据帧,它们共享多个公共列,如下所示: 第一个: 而第二个: 我想保留中的行,其列也存在于中。例如,df2的第27行有值,对于,这些值并不都存在于(因为df1只对列有值
我有一个pandas dataframe,我想在其中求和某些不规则间隔的日期之间的值。举个例子,我有这样的东西: 并且我知道这些总和的截止日期是2021-03-01、2021-03-04、2021-03-05,所以我想要截止日期和直到(但不包括)下一个截止日期产生的所有小部件的总和。所有不是截止日期的日期的值都为0。 这将产生如下所示的新列。 我怎么能在熊猫内部做到这一点呢?
我有一个由66个变量的10299个观测值组成的数据框。其中一些变量共享一个通用的列名,我想计算每个观测值的这些变量的平均值。 具有以下矩阵,列名: 我想得到: 我尝试了循环,命令,但没有得到所需的结果。 抱歉,如果这个问题看起来太基本了,我已经在谷歌上查过可能的解决方案,但没有找到任何解决方案。
我有一个熊猫数据框,看起来像这样: 下面是一个列表: 如何删除熊猫数据帧中包含列表中给定字符串的每一行? 所需的输出应如下所示:
答案的一部分可以在这里找到(如何根据列值从DataFrame中选择行?),但是它只适用于一列。我想知道如何将它应用于多列(本例中为两列)中的成对值。 我有一个数据帧df,其中过滤列是B和C(NaN表示空单元格): 数据目录的代码:
我有以下数据集: 我有以下带有ids的数组: 我想选择 id 属于 id 数组的数据帧 (df) 的列(array_id)。我希望输出是: 我设法实现了执行此操作的代码,但我需要使用两个for(): 输出为: 我想学习一种不需要使用两个for()的方法,并且(df_select)的输出不会与NaN一起出现。有没有办法解决这个问题?
图像中的数据帧 我想将年份(2020年)和上一个第五年(2016年)之间的所有值相加,其中输入PARTNO=输入 因此,对于输入值,我应该得到4 6 2 3 2(2016 2017 2019 2020),即17 请给我一些密码
我想根据某个列变量的不同值从数据框中选择行,并制作直方图。 输出:空数据框列:[年龄、工人阶级、fnlwgt、教育程度、受教育人数、婚姻状况、职业、关系、种族、性别、capitalgain、CapitalAlloss、每周小时数、国家、收入水平]索引:[] 从上面的几行可以看出,我试图选择收入水平为'