#python #pandas #dataframe #numpy
Вопрос:
Я хотел бы присвоить значение определенному индексу вновь созданного фрейма данных. Проведенный анализ был:
merged_YTD_df = []
for i in range(len(dfs) -1):
merged_YTD_df.append(pd.merge(dfs[2].drop_duplicates(), dfs[-1].drop_duplicates(), on=
['email','country'], how='left', indicator=True))
for i in range(len(merged_YTD_df)):
merged_YTD_df[i]=merged_YTD_df[i][merged_YTD_df[i]['_merge'] == 'left_only']
затем создайте новый фрейм данных для заполнения значения. Для того же, что я использовал:
df = pd.DataFrame({
"Date":[getDate(i) for i in tracker_files],
"Emailable":[len(i.email.unique()) for i in dfs],
"Lost_Fans":[merged_df[i-1].shape[0] if i > 0 else " " for i in range(len(merged_df) 1)],
"New_Fans":[merged_new_df[i-1].shape[0] if i > 0 else " " for i in range(len(merged_new_df) 1)],
"YTD_Lost_Fans":[merged_YTD_df[i 1].shape[0] if i > 0 else " " for i in range(len(merged_YTD_df) 1)],
"Country":[getCountrySymbol(i) for i in tracker_files]
})
результирующий фрейм данных, который я получил, используя приведенный выше код, выглядит так:
Date Emailable Lost_Fans New_Fans YTD_Lost_Fans Country
12-10-2020 121015 JP
06-11-2020 120740 346 71 45751 JP
18-12-2020 101746 19116 122 45751 JP
29-01-2021 105670 4983 8907 45751 JP
16-02-2021 115373 1229 10932 45751 JP
01-03-2021 115457 506 590 45751 JP
12-07-2021 137520 18041 40104 45751 JP
11-08-2021 134302 23744 20526 45751 JP
02-09-2021 130154 4340 192 45751 JP
ожидаемым результатом должно быть значение merged_YTD_df, которое должно быть последним индексом, равным 02-09-2021. таким образом, ожидаемый результат должен быть
Date Emailable Lost_Fans New_Fans YTD_Lost_Fans Country
12-10-2020 121015 JP
06-11-2020 120740 346 71 JP
18-12-2020 101746 19116 122 JP
29-01-2021 105670 4983 8907 JP
16-02-2021 115373 1229 10932 JP
01-03-2021 115457 506 590 JP
12-07-2021 137520 18041 40104 JP
11-08-2021 134302 23744 20526 JP
02-09-2021 130154 4340 192 45751 JP
не знаю, что я делаю не так. Пожалуйста, поправьте меня, где я делаю что-то не так.
Комментарии:
1. Из ваших вопросов не совсем понятно, что вы имеете в виду, но вы можете использовать
df.at[index, 'column_name'] = value
для этого?