熊猫align()函数:示例

避震:

我碰到了这段代码

app_train_poly, app_test_poly = app_train_poly.align(app_test_poly, join = 'inner', axis = 1)

这里app_train_polyapp_test_poly是熊猫数据

我知道使用align()可以对这两个数据帧进行某种组合,但是我无法直观地看到它实际上是如何工作的。

我搜索了文档,但找不到任何说明性示例。

安德鲁·盖伊(Andrew Guy):

您处于正确的轨道,除了DataFrame.align不合并两个数据框,而是它们对齐,以便两个数据框具有相同的行和/或列配置。让我们尝试一个例子:

使用一些描述性的列名和玩具数据初始化两个数据框:

df1 = pd.DataFrame([[1,2,3,4], [6,7,8,9]], columns=['D', 'B', 'E', 'A'], index=[1,2])
df2 = pd.DataFrame([[10,20,30,40], [60,70,80,90], [600,700,800,900]], columns=['A', 'B', 'C', 'D'], index=[2,3,4])

现在,让我们自己查看这些数据帧:

print(df1)
   D  B  E  A
1  1  2  3  4
2  6  7  8  9
print(df2)
     A    B    C    D
2   10   20   30   40
3   60   70   80   90
4  600  700  800  900

让我们对齐这两个数据框,按列对齐(axis=1),然后对列标签执行外部联接(join='outer'):

a1, a2 = df1.align(df2, join='outer', axis=1)
print(a1)
print(a2)
   A  B   C  D  E
1  4  2 NaN  1  3
2  9  7 NaN  6  8
     A    B    C    D   E
2   10   20   30   40 NaN
3   60   70   80   90 NaN
4  600  700  800  900 NaN

这里需要注意的几件事:

  • 中的列df1已重新排列,因此与中的列对齐df2
  • 有一个标记为'C'已添加到df1的列,以及一个标记为'E'已添加到的列df2这些列已填充NaN这是因为我们在列标签上执行了外部联接。
  • DataFrame内部的值均未更改。
  • 请注意,行标签未对齐;df234,而df1没有。这是因为我们要求对齐列(axis=1)。

如果我们在行和列上都对齐,但是将join参数更改为,会发生'right'什么?

a1, a2 = df1.align(df2, join='right', axis=None)
print(a1)
print(a2)
     A    B   C    D
2  9.0  7.0 NaN  6.0
3  NaN  NaN NaN  NaN
4  NaN  NaN NaN  NaN
     A    B    C    D
2   10   20   30   40
3   60   70   80   90
4  600  700  800  900

注意:

  • df2保留在“右侧”数据框()中找到的列和行'E'不再存在。这是因为我们在列和行标签上都进行了正确的联接。
  • 带有标签2和的3已添加到df1,并用填充Nan这是因为我们要求对行和列(axis=None都进行对齐
  • 现在,行标签和列标签都已对齐。
  • 同样,请注意,数据框内的实际值均未更改。

最后,让我们使用join='inner'axis=1查看问题中的代码

a1, a2 = df1.align(df2, join='inner', axis=1)
print(a1)
print(a2)
   D  B  A
1  1  2  4
2  6  7  9
     D    B    A
2   40   20   10
3   90   70   60
4  900  700  600
  • 仅列标签对齐(axis=1)。
  • 只有两者中都存在df1df2保留的列标签join='inner')。

总而言之,DataFrame.align()当您要确保两个数据帧之间的行和/或列的排列是相同的,而无需更改两个数据帧中包含的任何数据时,请使用此方法。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章