我有以下数据框:
state city alt_city
FL FT. PIERCE FORT PIERCE
FL FT. PIERCE FORTPIERCE
FL FT. PIERCE FT.PIERCE
FL FORT PIERCE FORTPIERCE
FL FORT PIERCE FT PIERCE
FL FORT PIERCE FT. PIERCE
FL FORT PIERCE FT.PIERCE
FL FORT PIERCE FTPIERCE
AK ANCHORAGE ANCH
AK ANCHORAGE ANCHORAGE
我想根据某些条件从中生成字典:
以下是伪代码:
def map_df_to_dict(d,state,city,alt_city):
key1 = (state,city)
val1 = alt_city
key2 = (state,alt_city)
val2 = city
if key1 in d:
d[key1].append(val1)
else:
d[key1] = []
d[key1].append(val1)
if key2 in d:
d[key2].append(val2)
else:
d[key2] = []
d[key2].append(val2)
return d
如果我使用以下代码将其应用于数据帧:
cs_d = {}
cs_dict = df.apply(lambda x: map_df_to_dict(cs_d,x['state'],x['city'],x['alt_city']), axis=1)
然后它将为数据框中的每一行返回字典。
但是我怎样才能将它应用到数据帧上,这样它就不会返回奇怪的结果。
Dataframe.apply 为每一行(或列)运行该函数。这就是为什么你会得到多个字典。
https://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.DataFrame.apply.html
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
沿 DataFrame 的输入轴应用函数。
传递给函数的对象是具有索引 DataFrame 的索引 (axis=0) 或列 (axis=1) 的 Series 对象。
参数: func :应用于每一列/行的函数
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句