python DataFrame 两表join
时间: 2024-06-18 19:02:25 浏览: 209
使用pandas对两个dataframe进行join的实例
在Python中,pandas库提供了DataFrame数据结构,可以方便地进行表格型数据处理。其中,join操作是将两个DataFrame按照某个共同列进行合并的操作。下面是两个DataFrame的join操作实现:
1. Inner Join:
内连接是指将两个DataFrame按照某个共同列进行匹配,并将匹配成功的行合并到一个新的DataFrame中。例如:
```
import pandas as pd
# 创建两个DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['C', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8]})
# 使用merge函数进行inner join
result = pd.merge(df1, df2, on='key')
# 输出结果
print(result)
```
输出结果为:
```
key value1 value2
0 C 3 5
1 D 4 6
```
2. Left Join:
左连接是指以左侧的DataFrame为基准,将右侧的DataFrame按照某个共同列进行匹配,并将匹配成功的行合并到一个新的DataFrame中。如果右侧的DataFrame中没有对应的匹配行,则填充缺失值NaN。例如:
```
import pandas as pd
# 创建两个DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['C', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8]})
# 使用merge函数进行left join
result = pd.merge(df1, df2, on='key', how='left')
# 输出结果
print(result)
```
输出结果为:
```
key value1 value2
0 A 1 NaN
1 B 2 NaN
2 C 3 5.0
3 D 4 6.0
```
3. Right Join:
右连接是指以右侧的DataFrame为基准,将左侧的DataFrame按照某个共同列进行匹配,并将匹配成功的行合并到一个新的DataFrame中。如果左侧的DataFrame中没有对应的匹配行,则填充缺失值NaN。例如:
```
import pandas as pd
# 创建两个DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['C', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8]})
# 使用merge函数进行right join
result = pd.merge(df1, df2, on='key', how='right')
# 输出结果
print(result)
```
输出结果为:
```
key value1 value2
0 C 3.0 5
1 D 4.0 6
2 E NaN 7
3 F NaN 8
```
4. Outer Join:
外连接是指将两个DataFrame按照某个共同列进行匹配,并将所有行合并到一个新的DataFrame中。如果左侧或右侧的DataFrame中没有对应的匹配行,则填充缺失值NaN。例如:
```
import pandas as pd
# 创建两个DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['C', 'D', 'E', 'F'], 'value2': [5, 6, 7, 8]})
# 使用merge函数进行outer join
result = pd.merge(df1, df2, on='key', how='outer')
# 输出结果
print(result)
```
输出结果为:
```
key value1 value2
0 A 1.0 NaN
1 B 2.0 NaN
2 C 3.0 5.0
3 D 4.0 6.0
4 E NaN 7.0
5 F NaN 8.0
```
阅读全文