zcg-cpdd

1.纵向连接DataFrame对象
(1)两个DataFrame对象的列完全相同

# 初始化两个DataFrame对象
df1 = pd.DataFrame([[\'a\', 1], [\'b\', 2]],
                columns=[\'letter\', \'number\'])

df2 = pd.DataFrame([[\'c\', 3], [\'d\', 4]],
                  columns=[\'letter\', \'number\'])

display(df1)
display(df2)

# 合并对象
pd.concat([df1, df2])

从上面的结果可以看到,concat重新连接到DataFrame对象,并合并之后不改变每个DataFrame子对象的索引值,因此可以在合并之后的DataFrame中看到索引的值0和1重复了两次。
如果希望重新设置合并之后的DataFrame对象的索引值,则可以添加ignore_index = True参数:

pd.concat([df1, df2], ignore_index=True)

(2)两个DataFrame对象的列不完全相同

# 初始化DataFrame对象
df1 = pd.DataFrame([[\'a\', 1], [\'b\', 2]],
                columns=[\'letter\', \'number\'])

df3 = pd.DataFrame([[\'c\', 3, \'cat\'], [\'d\', 4, \'dog\']],
                  columns=[\'letter\', \'number\', \'animal\'])

display(df1)
display(df3)

# 合并对象
pd.concat([df1, df3], sort=False)  # sort=False : 列的顺序维持原样, 不进行重新排序。

从结果可以看到,因为df1中没有动物列,所以在合并之后的DataFrame对象里,所对应的元素都被设置成了NaN。
如果只想合并相同的列,我们可以添加上join =\'inner\'参数:

pd.concat([df1, df3], join=\'inner\')

 

2.横向合并DataFrame对象
通过设置axis = 1,可以横向合并两个DataFrame对象。

# 初始化DataFrame对象
df1 = pd.DataFrame([[\'a\', 1], [\'b\', 2]],
                columns=[\'letter\', \'number\'])

df4 = pd.DataFrame([[\'bird\', \'polly\'], [\'monkey\', \'george\']],
                  columns=[\'animal\', \'name\'])

display(df1)
display(df4)

# 合并对象
pd.concat([df1, df4], axis=1)

 

注:配合os.walk()使用,可以将指定文件夹内的所有excel文件遍历读取,并纵向合并,实现批量合并excel文件。

 

 

 

参考原文:知乎@晓伟

https://www.zhihu.com/tardis/sogou/art/69224745

分类:

技术点:

相关文章:

  • 2021-12-22
  • 2021-08-16
  • 2021-12-29
  • 2021-11-06
  • 2021-11-06
猜你喜欢
  • 2021-12-22
  • 2021-12-29
  • 2021-12-04
  • 2017-12-09
  • 2021-12-28
相关资源
相似解决方案