您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Pandas的DataFrame代数

Pandas的DataFrame代数

尽管不直接支持这些功能,但是可以在尝试连接之前通过调整索引来实现它们。

您可以使用-运算符设置减号:

In [11]: ind = pd.Index([1, 2, 3])

In [12]: ind2 = pd.Index([3, 4, 5])

In [13]: ind - ind2
Out[13]: Int64Index([1, 2], dtype='int64')

并与和设置|交集与&

In [14]: ind | ind2
Out[14]: Int64Index([1, 2, 3, 4, 5], dtype='int64')

In [15]: ind & ind2
Out[15]: Int64Index([3], dtype='int64')

因此,如果您的某些DataFrame具有这些索引,则可以 加入 之前 重新索引:

In [21]: df = pd.DataFrame(np.random.randn(3), ind, ['a'])  # ind = df.index

In [22]: df2 = pd.DataFrame(np.random.randn(3), ind2, ['b'])  # ind2 = df2.index

In [23]: df.reindex(ind & ind2)
Out[23]:
          a
3  1.368518

现在,您可以建立所需的任何联接:

In [24]: df.reindex(ind & ind2).join(df2.reindex(ind & ind2))  # equivalent to inner
Out[24]:
          a         b
3  1.368518 -1.335534

In [25]: df.reindex(ind - ind2).join(df2.reindex(ind - ind2))  # join on A set minus B
Out[25]:
          a   b
1  1.193652 NaN
2  0.064467 NaN
其他 2022/1/1 18:28:32 有304人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶