python - Dataframe:添加两个 Daframe 的值
问题描述
我有两个数据框:
df1:
A B
Date
12/2020 1 0
13/2020 1 1
df2:
A B C
Date
12/2020 0 0 1
13/2020 1 0 1
我想将 df1 的值添加到 df2 中以获得以下信息:
df3:
A B C
Date
12/2020 1 0 1
13/2020 2 1 1
我怎样才能使用 pd.join 或 pd.merge 之类的东西来做到这一点?(我有两个大数据框)
谢谢你。
解决方案
尝试:
import pandas as pd
import pandasql as psql
df1 = 'Table1' #Insert dataframe
df2 = 'Table2' #Insert dataframe
#Create two dataframes to be joined on final dataframe
t1 = psql.sqldf('''
SELECT
CONCAT(Date, A, B) AS Full1
Date
, A
, B
FROM df1
''')
t2 = psql.sqldf('''
SELECT
CONCAT(Date, A, B) Full2
, Date
, A
, B
, C
FROM df2
''')
#Create Full Dataframe
full_df = psql.df('''
SELECT
tt.Full1
, tt.Date
, tt.A
, tt.B
, tt2.C
FROM t1 tt
LEFT JOIN t2 tt2 ON tt.Full1 = tt2.Full2
''')
#Create Final Dataframe
Final = psql.df('''
SELECT
Date
, A
, B
, C
FROM full_df
''')
#Save final result to csv
Final.to_csv(Index=False, 'file_name.csv')
推荐阅读
- python - 无法重新运行线程(但调试时一切正常)
- selenium - 如何以动态方式使用 appium 在 android 应用程序中知道我们是否到达页面末尾
- ruby-on-rails - Souce Sans Pro 字体不适用于开发 Rails 应用程序
- node.js - 我应该什么时候关闭这个数据库连接?
- sql-server - 为什么 asp.net 核心应用程序在连接到 SQL Server 时使用与 AppPool 身份不同的用户进行 Windows 身份验证?
- android-studio - 在使用 Android Studio 启动期间失去与设备的连接
- unity3d - 停止 Unity 中每个场景中的所有 AudioSource
- solidity - 恢复 ERC20.transferFrom
- apache - Apache 为 dav_svn 启用 dump_io
- html - 为什么 display:block 会影响 Firefox 中的垂直对齐?