python concat函数默认为outer_python - 熊猫的concat函数中的“级别”,“键”和名称参数是什么? - 堆栈内存溢出...

本文详细介绍了Pandas的concat函数,解释了各种参数如objs、axis、join、keys、ignore_index等的作用,并通过丰富的示例展示了如何使用这些参数进行数据合并。内容涵盖DataFrame和Series的堆叠、并排合并,以及如何处理MultiIndex等高级用法。
摘要由CSDN通过智能技术生成

在为我自己回答这个问题的过程中,我学到了很多东西,并且我想整理出一系列示例和一些说明。

有关levels参数争论点的具体答案即将结束。

pandas.concat :缺少的手册

导入和定义对象

import pandas as pd

d1 = pd.DataFrame(dict(A=.1, B=.2, C=.3), index=[2, 3])

d2 = pd.DataFrame(dict(B=.4, C=.5, D=.6), index=[1, 2])

d3 = pd.DataFrame(dict(A=.7, B=.8, D=.9), index=[1, 3])

s1 = pd.Series([1, 2], index=[2, 3])

s2 = pd.Series([3, 4], index=[1, 2])

s3 = pd.Series([5, 6], index=[1, 3])

争论

objs

我们遇到的第一个参数是objs :

objs :Series,DataFrame或Panel对象的序列或映射。如果传递了dict,则除非传递了已排序的键,否则它将用作keys参数,在这种情况下,将选择值(请参见下文)。 除非所有对象都为None,否则所有None对象都将被静默删除,在这种情况下,将引发ValueError

我们通常将其与Series或DataFrame对象的列表一起使用。

我将展示dict也会非常有用。

也可以使用发电机和使用时可以是有用的map中map(f, list_of_df)

现在,我们将坚持上面定义的一些DataFrame和Series对象的列表。 稍后我将展示如何利用字典来提供非常有用的MultiIndex结果。

pd.concat([d1, d2])

A B C D

2 0.1 0.2 0.3 NaN

3 0.1 0.2 0.3 NaN

1 NaN 0.4 0.5 0.6

2 NaN 0.4 0.5 0.6

axis

我们遇到的第二个参数是axis其默认值为0 :

axis :{0 /'index',1 /'columns'},默认值为0。

两个DataFrame的axis=0 (堆叠)

对于0或index值,我们的意思是说:“沿列对齐并添加到索引”。

如上所示,我们使用axis=0 ,因为0是默认值,并且我们看到d2的索引扩展了d1的索引,尽管值2有重叠:

pd.concat([d1, d2], axis=0)

A B C D

2 0.1 0.2 0.3 NaN

3 0.1 0.2 0.3 NaN

1 NaN 0.4 0.5 0.6

2 NaN 0.4 0.5 0.6

两个DataFrame其中axis=1 (并排)

对于值1或columns我们的意思是说:“沿索引对齐并添加到列中”,

pd.concat([d1, d2], axis=1)

A B C B C D

1 NaN NaN NaN 0.4 0.5 0.6

2 0.1 0.2 0.3 0.4 0.5 0.6

3 0.1 0.2 0.3 NaN NaN NaN

我们可以看到,结果索引是索引的并集,结果列是d1的列对d2的列的扩展。

axis=0两个(或三个) Series (堆叠)

当沿着axis=0组合pandas.Series ,我们得到一个pandas.Series 。 除非合并的所有Series具有相同的名称,否则所得Series的名称将为“ None 。 当我们打印出所得的Series时,请注意'Name: A' 。 当它不存在时,我们可以假定Series名称为None 。

| | | pd.concat(

| pd.concat( | pd.concat( | [s1.rename('A'),

pd.concat( | [s1.rename('A'), | [s1.rename('A'), | s2.rename('B'),

[s1, s2]) | s2]) | s2.rename('A')]) | s3.rename('A')])

-------------- | --------------------- | ---------------------- | ----------------------

2 1 | 2 1 | 2 1 | 2 1

3 2 | 3 2 | 3 2 | 3 2

1 3 | 1 3 | 1 3 | 1 3

2 4 | 2 4 | 2 4 | 2 4

dtype: int64 | dtype: int64 | Name: A, dtype: int64 | 1 5

| | | 3 6

| | | dtype: int64

axis=1两个(或三个) Series (并排)

当沿着axis=1组合pandas.Series ,它是我们引用的name属性,以推断结果pandas.DataFrame的列名称。

| | pd.concat(

| pd.concat( | [s1.rename('X'),

pd.concat( | [s1.rename('X'), | s2.rename('Y'),

[s1, s2], axis=1) | s2], axis=1) | s3.rename('Z')], axis=1)

------------

Pythonconcat函数是一个用于合并数据的函数。它可以用于将多个数据表按照行或列的方式进行拼接合并。具体来说,concat函数可以接受一个对象列表作为参数,并按照指定的轴(默认为纵向拼接)将这些对象进行拼接合并。在拼接时,可以通过设置参数来控制拼接的方式、是否重新生成索引等。例如,可以使用pd.concat([df1, df2])来将两个数据表df1和df2按照行的方式进行拼接合并。如果想要重新生成索引,可以设置ignore_index=True参数。 需要注意的是,concat函数在拼接过程并不会修改原始数据,而是生成一个新的拼接结果。如果想要将拼接结果保存到本地目录,可以使用to_excel()方法将数据以xlsx形式保存。例如,可以使用df_concat.to_excel("数据拼接结果.xlsx")将拼接结果保存到本地目录。 总的来说,Pythonconcat函数是用于合并数据的一个非常方便的函数,可以通过设置不同的参数来实现不同的拼接方式和需求。希望这个解答对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [pythonconcat等多种用法详解](https://download.csdn.net/download/weixin_38649091/12866014)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【Python】——concat函数](https://blog.csdn.net/qq_40264559/article/details/124504377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [超详细,数据处理过程 Python 宝藏函数concat()真的不错哦](https://blog.csdn.net/qq_34160248/article/details/122573719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值