假設我有一個 DataFrame 定義為:
df = {
"customer_name":"john",
"phone":{
"mobile":000,
"office":111
},
"mail":{
"office":"[email protected]",
"personal":"[email protected]",
"fax":"12345"
}
}
我想以某種方式更改“郵件”列中的值以洗掉鍵“傳真”。例如,輸出 DataFrame 將類似于:
output_df = {
"customer_name":"john",
"phone":{
"mobile":000,
"office":111
},
"mail":{
"office":"[email protected]",
"personal":"[email protected]"
}
}
其中“傳真”鍵值對已被洗掉。我嘗試在 lambda 中使用帶有 dict 的 pandas.map,但它不起作用。我有一個不好的解決方法是規范化字典,但這會創建不必要的輸出列,我無法將它們合并回來。例如。;
df = pd.json_normalize(df)
有沒有更好的方法呢?
uj5u.com熱心網友回復:
您可以使用pop從dict具有給定的key.
import pandas as pd
df['mail'].pop('fax')
df = pd.json_normalize(df)
df
輸出:
customer_name phone.mobile phone.office mail.office mail.personal 0 john 0 111 [email protected] [email protected]
uj5u.com熱心網友回復:
您是否有理由不直接訪問它并洗掉它?像這樣:
del df['mail']['fax']
print(df)
{'customer_name': 'john',
'phone': {'mobile': 0, 'office': 111},
'mail': {'office': '[email protected]', 'personal': '[email protected]'}}
uj5u.com熱心網友回復:
這是實作目標的最簡單技術。
import pandas as pd
import numpy as np
df = {
"customer_name":"john",
"phone":{
"mobile":000,
"office":111
},
"mail":{
"office":"[email protected]",
"personal":"[email protected]",
"fax":"12345"
}
}
del df['mail']['fax']
df = pd.json_normalize(df)
df
輸出 :
customer_name phone.mobile phone.office mail.office mail.personal 0 john 0 111 [email protected] [email protected]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/479704.html
