在 pandas
模块中,通常我们都需要对类型为 DataFrame
的数据进行操作,其中最为常见的操作便是拼接了。比如我们将两个 Excel
表格中的数据读入,随后拼接完成后保存进一个新的 Excel
表格文件中。之前查找了相关的博客, 发现网络上鱼龙混杂。有些代码完全无法执行,为了提高效率,这里做一个详细地记录。
DataFrame
数据拼接方法一:使用 .append()
方法。
import pandas as pd
df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])
df = df1.append(df2)
print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
0 1
0 1 2
1 3 4
df2的值为:
0 1
0 5 6
1 7 8
df的值为:
0 1
0 1 2
1 3 4
0 5 6
1 7 8
"""
我们可以看到,首先我们使用了类似于 list
列表的操作方式,使用 .append()
方法对 df1
与 df2
数据进行了操作, 但是需要注意的是,不同于对列表对象的操作,这里的 df1
仍旧为原来的 df1
所拥有的内容,而我们赋值的对象 df
才是保存了二者拼接以后的结果。 所以记得一定要单独执行赋值才可以得到正确的结果!!!其次我们看到结果其实是有些问题的, df
结果中的纵向索引值为 0,1,0,1
,仍旧保留了我们拼接前各自的索引值,这是不被我们需要的,因此我们需要设置 ignore_index=True
来对索引值进行重新排列。代码如下:
import pandas as pd
df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])
df = df1.append(df2, ignore_index=True)
print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
0 1
0 1 2
1 3 4
df2的值为:
0 1
0 5 6
1 7 8
df的值为:
0 1
0 1 2
1 3 4
2 5 6
3 7 8
"""
我们可以看到,此时的纵向索引值变正常了。
注意: df1 = pd.DataFrame([[1, 2], [3, 4]])
创建 DataFrame
类型的数据时要使用双层中括号,单层中括号会导致数据纵向排列。
DataFrame
数据拼接方法二:使用 .concat()
方法。
import pandas as pd
df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])
df = pd.concat([df1, df2], ignore_index=True)
print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
0 1
0 1 2
1 3 4
df2的值为:
0 1
0 5 6
1 7 8
df的值为:
0 1
0 1 2
1 3 4
2 5 6
3 7 8
"""
我们可以看到成功实现了拼接。
但是这样并不美观,我们发现,我们的纵向 index
还是用 0,1
在表示,那么我们可不可以自定义纵向 index
呢?答案是可以的,请看如下代码:
import pandas as pd
df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["column1", "column2"])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["column1", "column2"])
df = pd.concat([df1, df2], ignore_index=True)
print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
column1 column2
0 1 2
1 3 4
df2的值为:
column1 column2
0 5 6
1 7 8
df的值为:
column1 column2
0 1 2
1 3 4
2 5 6
3 7 8
"""
至此, DataFrame
的拼接问题暂时告一段落,当然还存在其他方法,以后有机会了再补充,这两种方法均为比较直观和简洁的方法。推荐使用。此外, pd.concat()
函数也适用于多个 DataFrame
的拼接, 只要将第一个参数变为一个列表,涵盖所有的 DataFrame
名称即可,如 [df1, df2, df3]
。
码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~
Original: https://blog.csdn.net/u011699626/article/details/116406070
Author: 勤奋的大熊猫
Title: pandas DataFrame拼接
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/744015/
转载文章受原作者版权保护。转载请注明原作者出处!