簡體   English   中英

從 DataFrame 中提取字符串,與上一列連接並與另一列 DataFrame 合並

[英]Extract strings from DataFrame, join with previous column and merge with another DataFrame

我有兩個 csv 文件/Pandas Dataframes 組織起來像

Sheet ID         Issue                                             Obs
P012CR0409F1-1,  P012CR0409F1-1-04, P012CR0409F1-1-05 crop again,
P012CR0427F1-1,  Missing image 08                               ,
P012V006-0018 ,  Missing images 01, 04, 05, 09                  ,

Image ID           Value1     Value2
P012CR0427F1-1-01  0.85839    0.76264

我需要最終得到一個 dataframe ,它本質上是第二個,還有兩個額外的 boolean 列: crop again and missing

因此,對於第一個新列,計划是再次使用(?P<crop>[\w-]+)(?=(?:\s*,\s*[\w-]+)*\s+crop again)以隔離圖像代碼,並為第二個(??Missing? images?) (?P<missing>\d{2})隔離缺失的索引。

我正在努力解決如何 1. 將缺失的索引與它們的工作表 ID 連接起來以獲取缺失的圖像代碼和 2. 在最后一個 dataframe 中加入所有這些。 我在 2D Pandas 方面並不可怕,但extractall function 返回一個 MultiIndex object,我無法真正理解如何操作。

非常感謝,

所以我最終做的是:

df = pd.read_csv("./First.csv", names=["id", "issue", "obs"])
df["crop"] = df["issue"].str.findall(
    r"(?P<crop>[\w-]+)(?=(?:\s*,\s*[\w-]+)*\s+crop again)"
)
df["missing"] = df["issue"].str.findall(
    r"(?!Missing images?) (?P<missing>\d{2})"
)
df = df.explode("crop")
df = df.explode("missing")
df["missing"] = df["id"] + "-" + df["missing"]
crop = df["crop"].dropna()
missing = df["missing"].dropna()

從那里我將兩者都用作系列,但可以直接在 Second.csv 中檢查它們並添加 boolean 列。

暫無
暫無

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

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