In [18]: input
Out[18]:
1 2 3 4
0 1 5 9 1
1 2 6 10 2
2 1 5 9 1
3 1 5 9 1
In [26]: df = input.drop_duplicates()
Out[26]:
1 2 3 4
0 1 5 9 1
1 2 6 10 2
resultant = [0, 1, 0, 0]
虽然这个例子在我的例子中是微不足道的,但作为一个例子,我有大量可能映射到一个索引的丢弃映射。
我为什么要这个?我正在训练一个自动编码器类型的系统,其中目标序列是非唯一的。
一种方法是将其视为所有列上的groupby
:
>> df.groupby(list(df.columns)).groups
{(1, 5, 9, 1): [0, 2, 3], (2, 6, 10, 2): [1]}
另一种方法是sort
然后进行比较,这在理论上效率较低,但在某些情况下可能更快,而且肯定更容易使错误容忍度更高:
>>> ds = df.sort(list(df.columns))
>>> eqs = (ds != ds.shift()).all(axis=1).cumsum()
>>> ds.index.groupby(eqs)
{1: [0, 2, 3], 2: [1]}
在我看来,这是正确的数据结构,但如果您真的想要一个包含组ID的数组,这也很容易,例如。
>>> eqs.sort_index() - 1
0 0
1 1
2 0
3 0
dtype: int64
我有一个pandas数据帧,如下所示: 我希望将第0行添加到数据帧的末尾,并获得如下所示的新数据帧: 我在熊猫身上能做什么来做到这一点?
有两个数据帧 输入 df1 df2 映射具有相似列的两个数据帧 从df2获取至少计数为2的匹配列。这里的和与带有2个值的df1匹配 预期产出:
我有一个熊猫,如下所示: 我想按进行分组并获取每个组的第一行: 预期成果: 我尝试了下面的方法,它只给出了< code>DataFrame的第一行。任何关于这方面的帮助都将不胜感激。
问题内容: 我有一个带有timeindex和3列的数据帧,其中包含3D矢量的坐标: 我想对也返回向量的每一行应用转换 但是如果我这样做: 我最后得到了一个以元组为元素的熊猫系列。这是因为apply将在不解压的情况下获取myfunc的结果。如何更改myfunc,以便获得具有3列的新df? 编辑: 以下所有解决方案均有效。Series解决方案确实允许使用列名,而List解决方案的执行速度似乎更快。 问
是否可以附加到不包含任何索引或列的空数据帧? 我已经尝试过这样做,但最终还是得到了一个空的数据帧。 例如。 结果如下所示: