簡體   English   中英

使用一個數據框(用作字典)填充主數據框(Python、Pandas)

[英]Use one data-frame (used as a dictionary) to fill in the main data-frame (Python, Pandas)

我有一個名為“cases”(5000000 行 × 5 列)的中央 DataFrame 和一個名為“相關信息”的輔助 DataFrame,它是一種與中央 DataFrame(300 行 × 6 列)相關的字典。 我正在嘗試根據名為“Verdict_type”的公共列填充中央 DataFrame。 並且,如果該值沒有出現在輔助 DataFrame 中,它會在將添加的所有行中填寫“not_relevant”。 我用了各種方向都沒有成功。 我很想得到一個好的方向。

數據幀

import pandas as pd

# this is a mockup of the raw data
cases = [
    [1, "1", "v1"],
    [2, "2", "v2"],
    [3, "3", "v3"]
]

relevant_info = [
    ["v1", "info1"],
    ["v3", "info3"]
]

# these are the data from screenshot
df_cases = pd.DataFrame(cases, columns=["id", "verdict_name", "verdict_type"]).set_index("id")
df_relevant_info = pd.DataFrame(relevant_info, columns=["verdict_type", "features"])

輸入:
df_cases <-- 注意這里標記為“id”的索引
df_relevant_info

# first, flatten the index of the cases ( this is probably what you were missing )
df_cases = df_cases.reset_index()
# then, merge the two sets on the verdict_type
df_merge = pd.merge(df_cases, df_relevant_info, on="verdict_type", how="outer")
# finally, mark missing values as non relevant
df_merge["features"] = df_merge["features"].fillna(value="not_relevant")

輸出:

merged set:
+----+------+----------------+----------------+--------------+
|    |   id |   verdict_name | verdict_type   | features     |
|----+------+----------------+----------------+--------------|
|  0 |    1 |              1 | v1             | info1        |
|  1 |    2 |              2 | v2             | not_relevant |
|  2 |    3 |              3 | v3             | info3        |
+----+------+----------------+----------------+--------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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