我正在努力連接 a 的不同列中包含的一些值Pandas.DataFrame。
給定這樣的 DataFrame:
| 型別 | 制作者 | 詳細資訊AsDict |
|---|---|---|
| 車 | 吉普車 | {型號:'1',顏色:'紅色'} |
| 車 | 吉普車 | {型號:'2',顏色:'白色'} |
| 卡車 | 福特 | 沒有 |
我想更改makerwhere typeis的值car,使 DF 看起來像這樣:
| 型別 | 制作者 | 詳細資訊AsDict |
|---|---|---|
| 車 | 吉普車,型號:1 | {型號:'1',顏色:'紅色'} |
| 車 | 吉普車,型號:2 | {型號:'2',顏色:'白色'} |
| 卡車 | 福特 | 沒有 |
為此,我嘗試使用loc:
cond = df['type'] == 'car'
df.loc[cond, 'maker'] = df['maker'] ', model:' df['detailsAsDict']['model']
但是,這會導致錯誤KeyError: model。
所以我嘗試了以下方法:
def test_data(data):
print(data['model'])
return data['model']
df.loc[cond, 'maker'] = test_data(df['detailsAsDict'])
但隨后test_data列印所有None值。
是否有可能實作我想要做的事情?我錯過了什么嗎?
uj5u.com熱心網友回復:
您可以使用str訪問器訪問列中字典的值:
cond = df['type'] == 'car'
df.loc[cond, 'maker'] = df['maker'] ', model:' df['detailsAsDict'].str['model']
輸出:
type maker detailsAsDict
0 car jeep, model:1 {'model': '1', 'color': 'red'}
1 car jeep, model:2 {'model': '2', 'color': 'white'}
2 truck ford None
至于用于test_data分配值,print回傳無,所以你真的將無分配給df.loc[cond, 'maker'].
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455768.html
