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)
делает какую-то дичь и выводит что-то непонятно странное... !???
result = (
df.
assign(
latest=lambda x:x
.groupby("file_name")["date_time"]
.rank(method='dense')
)
.loc[lambda x: x['latest'] == 1,:]
)
result
Возможно надо будет, поменять параметр, потому что точно что ты хочешь получить ты не говоришь. Все я тебе достаточно помог. result = (
df.
assign(latest=lambda x:x
.groupby("some_name")["date_time"]
.transform(pd.Series.nlargest, 1)
)
.loc[lambda x: x['date_time'] == x['latest'],:]
)
print(result)
В чем проблема запустить этот код. На некой категориальной переменной он выберет подсет с самыми большими датами по каждой группе. Я создал временную колонку latest последняя дата, затем сгрупировал затем трансформировал ее методом series, nlargest и оставил самую последнюю дату например мог оставить 2-3 да сколько угодно. Затем выбрал этот подсет, если временная колонка latest не нужна то ее можно дропнуть в конце. Я в целом принцип показал. вместо pd.Series.nalrgest можешь использовать приблизительно тысячу других функций или написать свою.