我有一个在其单元格中包含字典的数据框。 首先,我对没有值的列进行过滤,以便使用字典进行迭代和探索。 用字典对列进行迭代,我的目标是求和这些字典的值,并将它们添加到探索的新列中。
我不断收到错误消息:
TypeError:“ NoneType”对象不可迭代
数据框列如下所示:
[In] `df['column_A'].iloc[1]`
[Out]
{'16875259': 0.0,
'16909775': 9.0,
'16909808': 214.0,
'16909816': 3696.0,
'16910032': 725.0,
'16910067': 27.0,
'16910182': 11.0,
'16910237': 4.0,
'16910262': 3191.0,
'16910358': 52.0,
'16910411': 73.0,
'16910416': 111.0,
'16910477': 1869.0,
'16910598': 2425
for column in my_df:
if(my_df[column].values[1]!='None' or my_dfdf1[column].values[1] !=None):
for column in df1:
for item in df1[column].values:
for i in item:
#print(i)
# Here I need to sum the values
我期望值的总和,但我不断收到错误消息:
TypeError:“ NoneType”对象不可迭代
答案 0 :(得分:3)
如果值是字典,请使用if-else
语句求和,而按元素进行处理时请使用DataFrame.applymap
:
df = pd.DataFrame({'a':[{'16875259': 0.0, '16909775': 9.0, '16909808': 214.0},
{'16875259': 0.0, '16909775': 10.0},
np.nan],
'b':[{'16875259': 3.0, '16909775': 9.0, '16909808': 214.0},
np.nan,
{'16875259': 4.0, '16909775': 10.0},
]})
print (df)
0 {'16875259': 0.0, '16909775': 9.0, '16909808':...
1 {'16875259': 0.0, '16909775': 10.0}
2 NaN
b
0 {'16875259': 3.0, '16909775': 9.0, '16909808':...
1 NaN
2 {'16875259': 4.0, '16909775': 10.0}
df = df.applymap(lambda x: sum(x.values()) if isinstance(x, dict) else np.nan)
print (df)
a b
0 223.0 226.0
1 10.0 NaN
2 NaN 14.0
答案 1 :(得分:1)
您可以尝试以下方法吗?
df['column_A'].apply(lambda x: sum(x.values()))