如何在Python中分配Pandas列值?



这个想法是根据一个列表来分配pandas列。

from pandas import DataFrame
time_window_order=['268','264','260','256','252','248','244','240']
df =DataFrame ({'time_window':['268','268','268','264','252','252','252','240'],'seq_no':[0,0,0,1,4,4,4,7]})
for idx,ord in enumerate(time_window_order):
df.loc[df['time_window'].isin([ord]), 'centre_point'] = idx

但是,我想知道是否有更有效或内置的熊猫方法。

您可以将列表转换为以位置作为值的字典。键将是列表中的值。然后做一个映射来得到结果。

from pandas import DataFrame
time_window_order=['268','264','260','256','252','248','244','240']
order_dict = {k:i for i,k in enumerate(time_window_order)}
df =DataFrame ({'time_window':['268','268','268','264','252','252','252','240'],'seq_no':[0,0,0,1,4,4,4,7]})
df['centre_point'] = df['time_window'].map(order_dict)
print (df)

它的输出将是:

time_window  seq_no  centre_point
0         268       0             0
1         268       0             0
2         268       0             0
3         264       1             1
4         252       4             4
5         252       4             4
6         252       4             4
7         240       7             7

最新更新