簡體   English   中英

將兩個數據框與 pandas/numpy 相結合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM