是否可以將字典寫入資料框?我用我的結構創建了以下 DataFrame:
df =pd.DataFrame({'name': ['L1', 'L2'], 'DEF': [None, None]})
df
Out[70]:
name DEF
0 L1 None
1 L2 None
我也有字典
dict1={'DEF120':50}
如果嘗試將字典寫入 df 作為
df.loc[df.name=='L2', 'DEF'] = dict1
我得到 NaN 作為
df
Out[76]:
name DEF
0 L1 None
1 L2 NaN
但!如果我寫一個亂數,那么它可以作業!
df.loc[df.name=='L2', 'DEF'] = 1323213
df
Out[78]:
name DEF
0 L1 None
1 L2 1323213
有人可以解釋一下這里有什么問題嗎?為什么寫字典不起作用?
謝謝!
uj5u.com熱心網友回復:
使用 分配時,字典/串列具有特殊含義loc。Pandas 將嘗試將它們擴展到系列。
您需要作弊并使用at:
s = df.name=='L2'
idx = s[s].index[0]
df.at[idx, 'DEF'] = dict1
更新的資料框:
name DEF
0 L1 None
1 L2 {'DEF120': 50}
uj5u.com熱心網友回復:
您可以使用pandas.at:
>>> df.at[1, 'DEF'] = dict1
>>> df
name DEF
0 L1 None
1 L2 {'DEF120': 50}
這樣,您可以通過以下方式獲得價值50:
>>> df.loc[df.name=='L2', 'DEF'].str['DEF120']
1 50
Name: DEF, dtype: int64
uj5u.com熱心網友回復:
您可以嘗試將字典作為串列傳遞或使用np.whereor Series.mask。
df.loc[df.name=='L2', 'DEF'] = [dict1]
# or
df['DEF'] = df['DEF'].mask(df.name=='L2', dict1)
# or
df['DEF'] = np.where(df.name=='L2', dict1, df['DEF'])
print(df)
name DEF
0 L1 None
1 L2 {'DEF120': 50}
uj5u.com熱心網友回復:
基本上你可以這樣做:
import pandas as pd
dic = {"1st_entry":"hallo","2nd_entry":"good by"}
data = [1,2,3,dic]
df=pd.DataFrame(data)
print(df)
將導致
0
0 a
1 b
2 c
3 {'1st_entry': 'hallo', '2nd_entry': 'good by'}
您必須找到正確的方法來輸入資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/518237.html
上一篇:僅格式化非NaN的df行
