d1 = {'A':1,'B':2}
d2 = {'A':3,'B':4}
df = pd.DataFrame.from_records([d1,d2])
собирашь в список словари и по этом передаешь методу from_records. Это вместо concat. Если хочется работать с concat. То при каждой итерации ты создаешь отдельный фрейм с данными и одинаковыми колонками, собираешь эти фреймы в список и потом concat будет прекрасно работать например. dfs = []
for i in range(3):
df = pd.DataFrame({
'A':np.random.randn(4),
'B':np.random.choice(['green','blue','white'], 4)
})
dfs.append(df)
final_df = pd.concat(dfs,ignore_index=True)
import pandas as pd
import numpy as np
df = pd.DataFrame({
'temperature':[
1.5,1,4,-2,1,-1,-1,4,3,2,1,-2,-3,-4,-5,-6,-1,2,-2,-2,-3,4,-5,-3,3,1,2,5,3,2
]
}, index = pd.date_range('2023-01-01', periods=30))
negative_groups = (
df
.query('temperature < 0')
.groupby((df.temperature > 0).cumsum())
)
positive_groups = (
df
.query('temperature >= 0')
.groupby((df.temperature < 0).cumsum())
)
start_date = [value for value in negative_groups.groups.values() if len(value) >=5][0][4]
end_date = [value for value in positive_groups.groups.values() if len(value) >=5][0][4]
df.loc[start_date:end_date]
cat = pd.Categorical(df['Шифр дисциплины'].str.split('.').str[0],
categories=['ОГСЭ','ЕН','ОПЦ','МДК','УП','ПМ','ПП'])
print(df
.groupby(cat)
.apply(lambda x: x.sort_values('Шифр дисциплины', key = lambda x: x.str.split('.').str[1]))
.reset_index(drop=True)
)
cat = pd.Categorical(df['Шифр дисциплины'].str.split('.').str[0],
categories=['ОГСЭ','ЕН','ОПЦ','МДК','УП','ПМ','ПП'])
df.sort_values(by=['Шифр дисциплины'],key= lambda x: cat)
Результат будет, как у тебя только кода меньше и без всяких созданий временных колонок.def write(df, xl_writer, startrow = 0,**kwargs):
df.drop(df.index).to_excel(xl_writer, startrow = startrow,**kwargs)
df.to_excel(xl_writer, startrow = startrow + 1,header = False,**kwargs)
writer = pd.ExcelWriter("test_only_removed_empty_row.xlsx",engine='xlsxwriter')
write(df, writer, sheet_name = 'Лист1')
writer.close()
def write(df, xl_writer, startrow = 0,startcol=0,**kwargs):
df.drop(df.index).to_excel(xl_writer, startrow = startrow,startcol=startcol,**kwargs)
df.droplevel(0,axis=1).to_excel(xl_writer, startrow = startrow + 2, startcol=startcol+1,header = False,index=False,**kwargs)
writer = pd.ExcelWriter("bad_practice.xlsx",engine='xlsxwriter')
write(df, writer, sheet_name = 'Лист1')
writer.close()
import pandas as pd
import numpy as np
pd.DataFrame(np.where(dataframe_1 != dataframe_2, 'Ваше значение',dataframe_1), columns = dataframe_1.columns)
import pandas as pd
import numpy as np
pd.DataFrame(np.where(dataframe_1 != dataframe_2, dataframe_2,dataframe_1), columns = dataframe_1.columns)
import pandas as pd
import numpy as np
songs = {
'ANNA ASTI': ['Девочка танцуй','Грустный дэнс','Гармония'],
'Три дня дождя': ['Демоны','Где ты','Перезаряжай'],
'MACAN': ['Кино','Пополам','Бенз'],
}
NUMBER_OF_DAYS = 3
LENGTH_OF_FINAL_FRAME = sum(len(value) for value in (songs.values())) * NUMBER_OF_DAYS
dates = pd.date_range('2023-01-01', periods=NUMBER_OF_DAYS, freq='1D')
artists = []
for key, value in songs.items():
artists += [key] * len(value)
dates_and_artists = []
for date in dates:
for artist in artists:
dates_and_artists.append((date,artist))
songs_arr = np.array(list(songs.values()) * NUMBER_OF_DAYS).reshape(-1,1)
data = np.concatenate([np.array(dates_and_artists),
songs_arr,
np.random.randint(3000,1_000_000,LENGTH_OF_FINAL_FRAME).reshape(-1,1)], axis=1)
df = pd.DataFrame(data=data, columns=['Date','Artist','Track','Start'])
df
from itertools import chain
import pandas as pd
import numpy as np
songs = {
'ANNA ASTI': ['Девочка танцуй','Грустный дэнс','Гармония'],
'Три дня дождя': ['Демоны','Где ты','Перезаряжай'],
'MACAN': ['Кино','Пополам','Бенз'],
}
NUMBER_OF_DAYS = 3
NUMBER_OF_SONGS_PER_DAY = sum(len(value) for value in (songs.values()))
STARTING_DATE = '2023-01-01'
dates = pd.date_range(STARTING_DATE, periods=NUMBER_OF_DAYS, freq='1D')
artists = list(chain(*[[key] * len(value) for key, value in songs.items()]))
songs_per_day = list(chain(*songs.values()))
index = pd.MultiIndex.from_product([dates,artists],names=['Date','Artist'])
df = pd.DataFrame({
'Songs':songs_per_day * NUMBER_OF_DAYS,
'Start':np.random.randint(3000,1000000,NUMBER_OF_DAYS * NUMBER_OF_SONGS_PER_DAY),
}, index=index).reset_index()
df
df = pd.DataFrame({
'urls':['123.ru','lalala.ru','lalala.ru/qwe','lalala.ru/12rwse','bebe.ru'],
'other data':[1,1,1,1,1]
})
# Первый способ
new_df = df.loc[df['urls'].str.split('/').str[0].drop_duplicates().index]
print(new_df)
# Второй способ
new_df = df[~df['urls'].str.contains('/')].drop_duplicates()
print(new_df)
df = pd.DataFrame({
'urls':['http://123.ru/','http://lalala.ru','http://lalala.ru/qwe',
'http://lalala.ru/12rwse','http://bebe.ru'],
'other data':[1,1,1,1,1]
})
new_df = df.loc[df['urls'].str.split('//').str[1].str.split('/').str[0].drop_duplicates().index]
print(new_df)
shapka = {'Кадастровый № ОКС':[],'Вид ОКС':[],'Назначение':[],'Адрес ОКС':[],'Площадь':[],'Вид права':[],'ФИО':[],'Номер рег. записи':[]}
df = pd.DataFrame(shapka)
slovar = {'Кадастровый № ОКС': 'тут текст', 'Вид ОКС': 'тут текст', 'Назначение': 'тут текст', 'Адрес ОКС': 'тут текст', 'Площадь': 'тут текст', 'Вид права': 'тут текст', 'ФИО': 'тут текст', 'Номер рег. записи': 'тут текст'}
new_df = pd.concat([df, pd.DataFrame.from_records([slovar])] ,ignore_index=True)
d1 = {'A':1,'B':2}
d2 = {'A':3,'B':4}
df = pd.DataFrame.from_records([d1,d2])
print(df)
metrics_df[[
"same_intervals_between_requests"
df[["time_local", "id_session"]].groupby("id_session").apply(count_metric_using_shift)
df = pd.DataFrame({
'Cat':['A','A','B','A','B'],
'Num1':[1,2,3,4,5],
'Num2':[6,7,8,9,10]
})
df[['A','B']] = df[['Cat']].groupby('Cat').apply('mean')
df= pd.DataFrame({'time':pd.date_range('2023-03-22', periods=48, freq='H')})
bins = [0,5,11,16,22,24]
labels = ['Ночь', 'Утро','День','Вечер','Ночь']
df['session'] = pd.cut(df['time'].dt.hour, bins=bins, labels=labels, include_lowest=True,ordered=False)
df
import io
import pandas as pd
excel_file = io.BytesIO()
excel_file.name = "table_excel.xlsx"
all_frames = []
for history in ads:
item_title = history.get("item_title")
item_price = history.get("item_price")
current_df = pd.DataFrame(
{
"Имя": [item_title],
"Цена": [item_price],
}
)
all_frames.append(currend_df)
final_df = pd.concat(all_frames, ignore_index=True)
final_df.to_excel(excel_file, encoding="utf-8", index=False)