假設我有一個如下所示的資料框df:
|ColA |
|---------|
|B=7 |
|(no data)|
|C=5 |
|B=3,C=6 |
如何將資料提取到新列中,如下所示:
|ColA | B | C |
|------|---|---|
|True | 7 | |
|False | | |
|True | | 5 |
|True | 3 | 6 |
為了填充我知道的列,我可以使用正則運算式 .extract,如本解決方案所示。
但是如何同時設定列名呢?到目前為止,我使用了一個回圈df.ColA.loc[df["ColA"].isna()].iteritems(),但這對于很多資料來說似乎不是最好的選擇。
uj5u.com熱心網友回復:
您可以使用str.extractall來獲取資料,然后將輸出重塑join為原始資料幀的衍生物:
# create the B/C columns
df2 = (df['ColA'].str.extractall('([^=] )=([^=,] ),?')
.set_index(0, append=True)
.droplevel('match')[1]
.unstack(0, fill_value='')
)
# rework ColA and join previous output
df.notnull().join(df2).fillna('')
# or if several columns:
df.assign(ColA=df['ColA'].notnull()).join(df2).fillna('')
輸出:
ColA B C
0 True 7
1 False
2 True 5
3 True 3 6
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/336086.html
