[英]Combining two dataframes with pandas/numpy
我正在嘗試編寫從兩個不同數據庫獲取數據並給出結果的腳本,它是一個包含組合數據的 CSV 文件。
我設法使用 psycopg2 和 pandas read_sql_query 獲取數據,我將結果轉換為兩個不同的數據幀,所有這些都很好。 我只用關於這些數據庫的一點信息來寫所有這些,所以我使用了我擁有的數據庫和一些簡單的查詢。 所有這些都在我的 github 上:
https://github.com/tomasz-urban/sql-db-get
有了更多關於需要做什么的詳細信息,我被困住了......
在第一個數據庫中存在用戶限制:lim_val_1 和 lim_val_2 以及 user_id(幾千行)。 第二個持有每隔一段時間(幾十萬行)收集的 val_1 和 val_2 的使用情況。
我需要獲取用戶達到限制的那些行(不管是 lim_val_1 還是 lim_val_2 或兩者,我都需要這些)。
為了更好地可視化,鏈接中有一些簡單的表格: Databases info with output
我的最后一種方法:
result_query = df2.loc[(df2['val_1'] == df1['lim_val_1']) & (df2['val_2'] == df1['lim_val_2'])]
output_data = pd.DataFrame(result_query)
我收到一個錯誤:“ValueError:只能比較標簽相同的系列對象”
我不能 label 那些列相同所以我認為這個解決方案對我不起作用。 我也嘗試合並沒有結果。 任何人都可以幫助我嗎?
由於 df1 和 df2 的行數不同,無法直接比較值,嘗試加入數據幀,然后在滿足條件的地方加入 select。
如果user_id
是兩個 df 的索引:
df_3 = df1.join(df2)
df_3[
(df_3['val_1'] == df_3['lim_val_1']) |
(df_3['val_2'] == df_3['lim_val_2']
]
如果可能超出限制,您可能希望將==
替換為>=
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.