【发布时间】:2017-06-05 11:06:33
【问题描述】:
我有一个如下所示的数据框:
dic = {'A':['PINCO','PALLO','CAPPO','ALLOP'],
'B':['KILO','KULO','FIGA','GAGO'],
'C':[['CAL','GOL','TOA','PIA','STO'],
['LOL','DAL','ERS','BUS','TIS'],
['PIS','IPS','ZSP','YAS','TUS'],
[]]}
df1 = pd.DataFrame(dic)
我的目标是为每一行插入A 的元素作为C 列中包含的列表的第一项。同时我想将B的元素设置为C中包含的列表的最后一项。
我能够通过使用以下代码行来实现我的目标:
for index, row in df1.iterrows():
try:
row['C'].insert(0,row['A'])
row['C'].append(row['B'])
except:
pass
是否有更优雅、更有效的方法来实现我的目标,也许可以使用一些 Pandas 功能?我想尽可能避免 for 循环。
【问题讨论】:
-
你可以这样做
df1.C = df1.apply(lambda x: [x.A] + x.C + [x.B], axis=1),这有点好,但它不是很有效......
标签: python list pandas dataframe append