2015-12-17 2 views
0

У меня есть один dataframe (DF1), как следующее:Python Панды dataframe

 ATime   ETime  Difference 
0 1444911017815   1588510 1444909429305 
1 1444911144979   1715672 1444909429307 
2 1444911285683   1856374 1444909429309 
3 1444911432742   2003430 1444909429312 
4 1444911677101   2247786 1444909429315 
5 1444912444821   3015493 1444909429328 
6 1444913394542   3965199 1444909429343 
7 1444913844134   4414784 1444909429350 
8 1444914948835   5519467 1444909429368 
9 1444915840638   6411255 1444909429383 
10 1444916566634   7137240 1444909429394 
11 1444917379593   7950186 1444909429407 

У меня есть еще один очень большой dataframe (df2), который имеет столбец с именем Absolute_Time. Absolute_Time имеет формат ATime df1. Так что я хочу сделать, это, например, для всех Absolute_Time-х, которые лежат в пределах строки 0 грести 1 из ETime из df1, я хочу, чтобы вычесть строку 0 из Difference из df1 и так на.

+0

Я не понимаю, объяснения того, что вы пытаетесь достичь ... –

+0

Покажите нам, что вы пробовали до сих пор, и мы, вероятно, будем способный помочь вам. – cel

ответ

1

Вот попытка сделать то, что вы могли бы искать, начиная с:

print(df1) 

      ATime ETime  Difference 
0 1444911017815 1588510 1444909429305 
1 1444911144979 1715672 1444909429307 
2 1444911285683 1856374 1444909429309 
3 1444911432742 2003430 1444909429312 
4 1444911677101 2247786 1444909429315 
5 1444912444821 3015493 1444909429328 
6 1444913394542 3965199 1444909429343 
7 1444913844134 4414784 1444909429350 
8 1444914948835 5519467 1444909429368 
9 1444915840638 6411255 1444909429383 
10 1444916566634 7137240 1444909429394 
11 1444917379593 7950186 1444909429407 

рядом создания нового DataFrame со случайными временами в диапазоне df1:

df2 = pd.DataFrame({'Absolute Time':[randrange(start=df1.ATime.iloc[0], stop=df1.ATime.iloc[-1]) for i in range(100)]}) 
df2 = df2.sort_values('Absolute Time').reset_index(drop=True) 

np.searchsorted предоставляет вам с index positions, где df2 следует вставить в df1 (для columns):

df2.index = np.searchsorted(df1.ATime.values, df2.loc[:, 'Absolute Time'].values) 

Присвоение нового индекса и слияние дает новый DataFrame. Заполнение недостающих Difference значений вперед позволяет вычитать в следующем шаге:

df = pd.merge(df1, df2, left_index=True, right_index=True, how='left').fillna(method='ffill').dropna().astype(int) 
df['Absolute Time Adjusted'] = df['Absolute Time'].sub(df.Difference) 
print(df.head()) 

      ATime ETime  Difference Absolute Time \ 
1 1444911144979 1715672 1444909429307 1444911018916 
1 1444911144979 1715672 1444909429307 1444911138087 
2 1444911285683 1856374 1444909429309 1444911138087 
3 1444911432742 2003430 1444909429312 1444911303233 
3 1444911432742 2003430 1444909429312 1444911359690 

    Absolute Time Adjusted 
1     1589609 
1     1708780 
2     1708778 
3     1873921 
3     1930378 
Смежные вопросы