另一种方法是定义一个仅调用
mindict并返回一个Series的函数,以便您可以分配给多个列(函数主体取自@Alex
Martelli的answer):
In [17]:def func(x): k = min(x, key=x.get) return pd.Series([k, x[k]])df[['orgs', 'value']] = df['orgs'].apply(func)dfOut[17]: asn id orgs value0 3320 0 Deutsche Telekom AG 22881 47886 1 Equinix (Netherlands) B.V. 72 47601 2 fusion services 10243 33438 3 Highwinds Network Group 893
编辑
如果您的数据包含空dics,那么您可以测试
len:
In [34]:df = pd.Dataframe({'id':[0,1,2,3,4], 'asn':[3320,47886,47601,33438,56], 'orgs':[{'Deutsche Telekom AG': 2288}, {'Joyent': 16, 'Equinix (Netherlands) B.V.': 7}, {'fusion services': 1024, 'GCE Global Maritime':16859}, {'Highwinds Network Group': 893},{}]})dfOut[34]: asn id orgs0 3320 0{'Deutsche Telekom AG': 2288}1 47886 1 {'Equinix (Netherlands) B.V.': 7, 'Joyent': 16}2 47601 2 {'GCE Global Maritime': 16859, 'fusion service...3 33438 3 {'Highwinds Network Group': 893}4 56 4 {}In [36]:def func(x): if len(x) > 0: k = min(x, key=x.get) return pd.Series([k, x[k]]) return pd.Series([np.NaN, np.NaN])df[['orgs', 'value']] = df['orgs'].apply(func)dfOut[36]: asn id orgs value0 3320 0 Deutsche Telekom AG 22881 47886 1 Equinix (Netherlands) B.V. 72 47601 2 fusion services 10243 33438 3 Highwinds Network Group 8934 56 4 NaN NaN
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)