【发布时间】:2018-04-04 17:32:09
【问题描述】:
我正在使用 Python。我有两个数据框 df1 和 df2:
d1 = {'timestamp1': [88148 , 5617900, 5622548, 5645748, 6603950, 6666502], 'col01': [1, 2, 3, 4, 5, 6]}
df1 = pd.DataFrame(d1)
d2 = {'timestamp2': [5629500, 5643050, 6578800, 6583150, 6611350], 'col02': [7, 8, 9, 10, 11], 'col03': [0, 1, 0, 0, 1]}
df2 = pd.DataFrame(d2)
我想在 df1 中创建一个新列,其中 df2 的最小时间戳值大于当前 df1 时间戳,其中 df2['col03'] 为零。我就是这样做的:
df1['colnew'] = np.nan
TSs = df1['timestamp1']
for TS in TSs:
values = df2['timestamp2'][(df2['timestamp2'] > TS) & (df2['col03']==0)]
if not values.empty:
df1.loc[df1['timestamp1'] == TS, 'colnew'] = values.iloc[0]
它有效,但我不想使用 for 循环。有没有更好的方法来做到这一点?
【问题讨论】:
-
你试过 searchsorted (pandas.pydata.org/pandas-docs/stable/generated/…) 吗?