Как создать новый Python DataFrame с несколькими столбцами разной длины строк? - PullRequest
0 голосов
/ 12 декабря 2018

Я организую новый фрейм данных, чтобы легко вставить данные в фрагмент кода визуализации Bokeh.Я думаю, что моя проблема связана с разной длиной строк, но я не уверен.

Ниже я организовал набор данных в алфавитном порядке по названию страны и создал алфавитный список отдельных стран. new_data.tail () Хотя Зимбабве указан в списке последним, имеется 80336 строк, отсюда и сортировка.

    df_ind_data = pd.DataFrame(ind_data)
    new_data = df_ind_data.sort_values(by=['country'])
    new_data = new_data.reset_index(drop=True)
    country_list = list(ind_data['country'])
    new_country_set = sorted(set(country_list))

Моя цель - создать новый DataFrame с 76 столбцами (названиями стран)с конкретными данными 'trust' в строках под каждым столбцом страны.

df = pd.DataFrame()
for country in new_country_set:
    pink = new_data.loc[(new_data['country'] == country)]
    df[country] = pink.trust

Вывод здесь

Как видите, данные не включаются для остальных столбцов после первого.Я полагаю, что это связано с тем, что число рядов данных доверия для каждой страны варьируется.Хотя в первом столбце содержится 1000 строк, в некоторых есть до 2500 точек данных и всего 500.

Я попытался несколькими разными способами указать количество строк в 'df', ноно безрезультатно.

Фрагмент кода визуализации, который я имею, использует ту же самую точную структуру данных для данных шаблона, поэтому я пытаюсь поместить ее в кадр данных. Плюс, я не могусделай это, поэтому я хочу знать, как это сделать.

Да, я могу поместить его в словарь, но я хочу поместить его в фрейм данных.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Я думаю, что в этом случае pd.pivot(columns = 'var', values = 'val') будет работать для вас, особенно если у вас уже есть датафрейм.Эта функция будет передавать значения из определенного столбца в имена столбцов.Вы могли видеть документацию для дополнительной информации.Надеюсь, это поможет.

0 голосов
/ 12 декабря 2018

При добавлении нового столбца следует использовать Объединить_фирст , чтобы расширить индекс данных.Вместо

df[country] = pink.trust

следует использовать

df = pink.trust.combine_first(df)

, что гарантирует, что ваш индекс всегда объединяет все добавленные столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...