Подтвердить что ты не робот

Можно ли добавлять серию в строки DataFrame, не делая сначала списка?

У меня есть некоторые данные, которые я пытаюсь организовать в DataFrame в Pandas. Я пытался сделать каждую строку Series и добавить ее в DataFrame. Я нашел способ сделать это, добавив Series в пустой list и затем преобразовывая list Series в DataFrame

например DF = DataFrame([series1,series2],columns=series1.index)

Этот list на шаге DataFrame кажется чрезмерным. Здесь я рассмотрел несколько примеров, но ни одна из Series сохранила метки Index из Series чтобы использовать их в качестве меток столбцов.

Мой длинный путь, где столбцы - id_names, а строки - type_names: enter image description here

Можно ли добавлять серию в строки DataFrame, не делая сначала списка?

#!/usr/bin/python

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value)
    DF.append(SR_row)
DF.head()

TypeError: Can only append a Series if ignore_index=True or if the Series has a name

Затем я попробовал

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value,name=sample)
    DF.append(SR_row)
DF.head()

Пустой DataFrame

Пробовал Вставить строку в pandas dataframe По-прежнему получать пустой фреймворк:/

Я пытаюсь получить Series как строки, где индекс Series становится меткой столбца DataFrame

4b9b3361

Ответ 1

Может быть, проще будет добавить pandas.Series в pandas.DataFrame с ignore_index=True аргументом DataFrame.append(). Пример -

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value)
    DF = DF.append(SR_row,ignore_index=True)

Демо -

In [1]: import pandas as pd

In [2]: df = pd.DataFrame([[1,2],[3,4]],columns=['A','B'])

In [3]: df
Out[3]:
   A  B
0  1  2
1  3  4

In [5]: s = pd.Series([5,6],index=['A','B'])

In [6]: s
Out[6]:
A    5
B    6
dtype: int64

In [36]: df.append(s,ignore_index=True)
Out[36]:
   A  B
0  1  2
1  3  4
2  5  6

Другая проблема в вашем коде заключается в том, что DataFrame.append() не является на месте, он возвращает добавленный фреймворк данных, вам нужно будет вернуть его обратно к исходному файловому кадру, чтобы он работал. Пример -

DF = DF.append(SR_row,ignore_index=True)

Чтобы сохранить метки, вы можете использовать свое решение, чтобы включить имя для серии, а также присвоить добавленный DataFrame обратно в DF. Пример -

DF = DataFrame()
for sample,data in D_sample_data.items():
    SR_row = pd.Series(data.D_key_value,name=sample)
    DF = DF.append(SR_row)
DF.head()

Ответ 2

DataFrame.append не изменяет DataFrame на месте. Вам нужно сделать df = df.append(...) если вы хотите переназначить его обратно исходной переменной.

Ответ 3

Что-то вроде этого может работать...

mydf.loc['newindex'] = myseries

Вот пример, где я использовал его...

stats = df[['bp_prob', 'ICD9_prob', 'meds_prob', 'regex_prob']].describe()

stats
Out[32]: 
          bp_prob   ICD9_prob   meds_prob  regex_prob
count  171.000000  171.000000  171.000000  171.000000
mean     0.179946    0.059071    0.067020    0.126812
std      0.271546    0.142681    0.152560    0.207014
min      0.000000    0.000000    0.000000    0.000000
25%      0.000000    0.000000    0.000000    0.000000
50%      0.000000    0.000000    0.000000    0.013116
75%      0.309019    0.065248    0.066667    0.192954
max      1.000000    1.000000    1.000000    1.000000

medians = df[['bp_prob', 'ICD9_prob', 'meds_prob', 'regex_prob']].median()

stats.loc['median'] = medians

stats
Out[36]: 
           bp_prob   ICD9_prob   meds_prob  regex_prob
count   171.000000  171.000000  171.000000  171.000000
mean      0.179946    0.059071    0.067020    0.126812
std       0.271546    0.142681    0.152560    0.207014
min       0.000000    0.000000    0.000000    0.000000
25%       0.000000    0.000000    0.000000    0.000000
50%       0.000000    0.000000    0.000000    0.013116
75%       0.309019    0.065248    0.066667    0.192954
max       1.000000    1.000000    1.000000    1.000000
median    0.000000    0.000000    0.000000    0.013116

Ответ 4

Попробуйте использовать эту команду. См. Пример ниже:

Before image

df.loc[len(df)] = ['Product 9',99,9.99,8.88,1.11]

df

After Image