網站首頁 編程語言 正文
pandas合并操作
在實際工作中,我們的數據經常存儲在多個文件中,這時候就需要挨個讀取出來,然后合并成一個DataFrame
對象。在pandas
中,可以通過pd.concat
和pd.merge
來實現合并的功能。
pd.concat:
pd.concat(datas, axis=1)
,按照行或者列合并多個數據,axis=0
為列索引,axis=1
為行索引。比如我們以二手車數據為例,合并廣州和北京的二手車數據。示例代碼如下:
df_gz = pd.read_csv("data/guazi_gz.csv")
df_bj = pd.read_csv("data/guazi_bj.csv")
df = pd.concat([df_gz, df_bj])
其中df_gz
和df_bj
的列名都是一樣的,上述代碼是將多行合并在一起。
如果要將不同列的數據合并在一起,那么則根據行索引名稱進行拼接。
pd.merge:
pd.merge(left, right, how="inner", on=None, left_on=None, right_one=None)
類似于SQL
語句中的連接。都是指定按照共同鍵值對合并或者左右內連接。參數意義如下:
-
left
和right
:兩個需要合并的DataFrame
對象。 -
how
:指定合并的方式。有以下可選參數。
Merge Method SQL Join Name 描述 left LEFT OUTER JOIN 只使用左邊的DataFrame的key作為連接字段 right RIGHT OUTER JOIN 只使用右邊的DataFrame的key作為連接字段 outer FULL OUTER JOIN 使用左邊和右邊的key值的并集連接 inner INNER JOIN 使用左邊和右邊的key值的交集連接 -
on
:按照哪個字段進行合并,指定的鍵必須在兩個DataFrame
中都存在。 -
left_on
:左連接的字段。 -
right_on
:右連接的字段。
pd.merge合并:
- 使用
left_on
和right_on
參數合并:
df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],
'value': [1, 2, 3, 5]})
df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'],
'value': [5, 6, 7, 8]})
print(df1)
print(df2)
輸出結果如下:
lkey value
0 foo 1
1 bar 2
2 baz 3
3 foo 5
rkey value
0 foo 5
1 bar 6
2 baz 7
3 foo 8
執行merge
操作代碼如下:
pd.merge(df1, df2, left_on="lkey", right_on="rkey")
輸出結果為:
lkey value_x rkey value_y
0 foo 1 foo 5
1 foo 1 foo 8
2 foo 5 foo 5
3 foo 5 foo 8
4 bar 2 bar 6
5 baz 3 baz 7
- 使用
on
參數合并:
案例對象如下:
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
內連接:
result = pd.merge(left, right, on=['key1', 'key2'])
左連接:
result = pd.merge(left, right, how='left', on=['key1', 'key2'])
右連接:
result = pd.merge(left, right, how='right', on=['key1', 'key2'])
外連接:
result = pd.merge(left, right, how='outer', on=['key1', 'key2'])
原文鏈接:https://blog.csdn.net/qq_41404557/article/details/125899054
- 上一篇:常見CSS樣式
- 下一篇:UIStackView嵌套的Label多行文字動態高度
相關推薦
- 2022-05-29 .NET?Core通過dotnet?publish命令發布應用_實用技巧
- 2022-07-31 如何理解C++指針常量和常量指針_C 語言
- 2023-02-27 C++文件讀取的4種情況匯總_C 語言
- 2024-03-20 解決npm install遇到的問題:Error while executing:
- 2022-06-27 Vscode的SSH插件遠程連接Linux的實現步驟_其它綜合
- 2022-04-16 詳解C語言通過遞歸與非遞歸實現蛇形矩陣_C 語言
- 2022-04-28 shell命令返回值判斷的方法實現_linux shell
- 2022-12-29 React中的Hooks路由跳轉問題_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支