我有這樣的資料結構
| 名稱 | 目標 | 小鬼 |
|---|---|---|
| 鮑勃 | {'codes':[3,4,6,199], 'region':'us', 'meta':''} | 200 |
| 戴安娜 | {'代碼':[3,33,199],'區域':'我們','元':''} | 100 |
我正在嘗試使最終結果再提取一列codes,targets就像這樣
| 名稱 | 目標 | 小鬼 | 目標代碼 |
|---|---|---|---|
| 鮑勃 | {'codes':[3,4,6,199], 'region':'us', 'meta':''} | 200 | [3,4,6,199] |
| 戴安娜 | {'代碼':[3,33,199],'區域':'我們','元':''} | 100 | [3,33,199] |
我試著做
df['targets.code'] = df['targets'].apply(lambda x: x['codes'])
但它顯示在那條線上指定
[2022-01-14 19:53:33,660] {{taskinstance.py:1150}} ERROR - 'NoneType' object is not subscriptable
我真的嘗試挖掘很多帖子,但沒有找到解決方案。我究竟做錯了什么?
uj5u.com熱心網友回復:
看起來您在“目標”列下的源中有錯誤資料(空欄位),因為以下作業:
df = pd.DataFrame([{'name': 'Bob', 'targets': {'codes':[3,4,6,199], 'region':'us', 'meta':''}}])
print(df)
# name targets
# 0 Bob {'codes': [3, 4, 6, 199], 'region': 'us', 'met...
df['targets.code'] = df['targets'].apply(lambda x: x['codes'])
print(df)
# name targets targets.code
# 0 Bob {'codes': [3, 4, 6, 199], 'region': 'us', 'met... [3, 4, 6, 199]
uj5u.com熱心網友回復:
您可以使用pd.json_normalize:
df['targets.code'] = pd.json_normalize(df['targets'])['codes']
print(df)
# Output
name targets imp targets.code
0 Bob {'codes': [3, 4, 6, 199], 'region': 'us', 'met... 200 [3, 4, 6, 199]
1 Diana {'codes': [3, 33, 199], 'region': 'us', 'meta'... 100 [3, 33, 199]
您還可以使用理解:
df['targets.code'] = [x['codes'] if x else [] for x in df['targets']]
print(df)
# Output
name targets imp targets.code
0 Bob {'codes': [3, 4, 6, 199], 'region': 'us', 'met... 200 [3, 4, 6, 199]
1 Diana {'codes': [3, 33, 199], 'region': 'us', 'meta'... 100 [3, 33, 199]
2 Test None 50 []
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412456.html
標籤:
上一篇:當從資料框中檢索到不存在的行名時,為什么R會出現不一致的行為?
下一篇:帳號計數
