(
df
.assign(
EventTime=lambda x: pd.to_datetime(x['EventTime'],format='%Y-%m-%d %H:%M:%S')
)
.assign(
groups=(df['EventType'] != df['EventType'].shift())
.cumsum()
)
.groupby(['user_id','groups']
)
.agg(
first= pd.NamedAgg(column='EventTime',aggfunc=lambda x: np.min(x)),
last= pd.NamedAgg(column='EventTime',aggfunc=lambda x: np.max(x)),
EventType= pd.NamedAgg(column='EventType',aggfunc=lambda x: set(x).pop()),
# user_id=pd.NamedAgg(column='user_id',aggfunc=lambda x: set(x).pop()),
)
.reset_index()
.loc[:,['user_id','EventType','first','last']]
) Будет вот так. Все Идентично, только теперь группировка будет по двум колонкам.
phone_numbers = pd.read_csv('test.csv',index_col='Номер Телефона',chunksize=1)
dfs = []
counts = 0
numbers_of_interset = [777,333]
for data in phone_numbers:
index = data.index.intersection(numbers_of_interset)
res = data.loc[index,:]
dfs.append(res)
counts+=res.shape[0]
(
pd.concat(dfs)
.to_csv('result.csv')
)
print(f'found {counts} mutches')
Как вы считаете, нужно пристально в Python уходить вначале, параллельно изучая всю подноготную DS?Просто в python без подноготной DS. Насчет математики 4 дисциплины.
sep=' '.
Открой доки по функции print. Если ты например туда запятую поставишь то через запятую и т.д. original_frame = pd.DataFrame(data=some_data)
def first_function(df:pd.DataFrame,*args,**kwargs)->pd.DataFrame:
pass
def second_function(df:pd.DataFrame,*args,**kwargs)->pd.DataFrame:
pass
def third_function(df:pd.DataFrame,*args,**kwargs)->pd.DataFrame:
pass
result = (
original_frame
.pipe(first_function,*args, **kwargs)
.pipe(second_function,*args, **kwargs)
.pipe(third_function,*args, **kwargs)
...
...
.pipe(last_function,*args,**kwargs)
)
df = pd.DataFrame({
'A':['first_sometext','second_some_text','first_numbers','third_text','second_something'],
'B':[100,4,2,45,23]
})
result = (
df.assign(
prefix = lambda x: pd.Categorical(x['A'].str.split('_').str[0],categories=['first','second','third'])
)
.sort_values(by='prefix')
.drop(columns=['prefix'])
)
print(result)
result = (
df.assign(
prefix = lambda x: pd.Categorical(x['A'].str.split('_').str[0],categories=['first','second','third'])
)
.sort_values(by='prefix')
.assign(conditions='default')
.assign(conditions= lambda x:x['conditions'].where(~(x['prefix']=='first'),'Первый'))
.assign(conditions= lambda x:x['conditions'].where(~(x['prefix']=='second'),'Второй'))
.assign(conditions= lambda x:x['conditions'].where(~(x['prefix']=='third'),'Третий'))
.drop(columns=['prefix'])
)
print(result)