当我们需要将两个Pandas DataFrame对象合并为一个时,就需要使用Pandas拼接函数。合并的方式可以是简单的竖直合并(即按行连接)或水平合并(即按列连接),也可以是更复杂的合并方式。下面,我将详细讲解Pandas拼接函数的使用方法。
1. 竖直合并(行连接)
要将两个DataFrame对象按垂直方向合并(即按行连接),我们可以使用Pandas的concat函数。使用concat函数将两个DataFrame沿着行元素的方向上下拼接,即增加行数,列数不变。具体代码如下:
import pandas as pd
df1 = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})
df2 = pd.DataFrame({'A':[11,12,13],'B':[14,15,16]})
result = pd.concat([df1, df2])
print(result)
输出结果为:
A B
0 1 4
1 2 5
2 3 6
0 11 14
1 12 15
2 13 16
在使用concat函数时,我们需要给函数传入一个列表 [df1, df2],以指定需要合并的DataFrame对象;同时,还需传入参数 axis=0,以指定沿着行元素方向进行拼接。
2. 水平合并(列连接)
要将两个DataFrame对象按水平方向合并(即按列连接),需要设置concat函数的参数axis=1。这样拼接完成后,输出的DataFrame将增加列数,行数不变。具体代码如下:
import pandas as pd
df1 = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})
df2 = pd.DataFrame({'C':[11,12,13],'D':[14,15,16]})
result = pd.concat([df1, df2], axis=1)
print(result)
输出结果为:
A B C D
0 1 4 11 14
1 2 5 12 15
2 3 6 13 16
3. 按索引拼接
当我们需要以DataFrame的索引作为拼接依据时,可以使用Pandas的join函数。默认情况下,join函数和concat函数的行为是相同的,只不过它提供了更多的参数选项。以下是一个简单的示例:
import pandas as pd
df1 = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]}, index=['a','b','c'])
df2 = pd.DataFrame({'C':[11,12,13],'D':[14,15,16]}, index=['a','b','d'])
result = df1.join(df2, how='outer')
print(result)
输出结果为:
A B C D
a 1.0 4.0 11.0 14.0
b 2.0 5.0 12.0 15.0
c 3.0 6.0 NaN NaN
d NaN NaN 13.0 16.0
在使用join函数时,我们需要给函数传入一个DataFrame作为参数,并通过how参数指定连接方式。如果想要按照索引键上的共同 值连接两个DataFrame,就需要使用how=‘inner’;如果想要保留所有索引键上的值,就需要使用how=‘outer’。
4. 在特定位置进行拼接
有些情况下,我们需要在DataFrame对象的特定位置进行拼接,来进行一些特殊的操作。在这种情况下,我们可以使用Pandas的merge函数。以下是一个简单的变换示例:
import pandas as pd
df1 = pd.DataFrame({'key': ['foo', 'bar', 'baz', 'foo'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['foo', 'bar', 'baz', 'foo'], 'value': [5, 6, 7, 8]})
result = pd.merge(df1.iloc[0:2,:], df2.iloc[1:4,:], on='key')
print(result)
输出结果为:
key value_x value_y
0 foo 1 7
1 bar 2 6
2 baz 3 7
在使用merge函数时,需要为它传递两个DataFrame对象,并指定要连接的关键词。在上述例子中,我们将连接的关键词设置为‘key’。
总结:Pandas拼接是数据分析中的基础操作之一,拼接操作可以将多个数据集合并到一起,使得数据分析更加有效。在熟练掌握基础的拼接方式后,可以深入学习更灵活、更高级的拼接方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas 拼接(concat) - Python技术站