Как добавить столбцы в пустой кадр данных панд? - PullRequest
0 голосов
/ 16 мая 2018

у меня пусто dataframe.

df=pd.DataFrame(columns=['a'])

по какой-то причине я хочу сгенерировать df2, другой пустой фрейм данных, с двумя столбцами 'a' и 'b'.

Если я делаю

df.columns=df.columns+'b'

это не работает (я получаю столбцы, переименованные в 'ab') и ни один не делает следующее

df.columns=df.columns.tolist()+['b']

Как добавить отдельный столбец 'b' к df, и df.emtpy продолжает быть True?

Использование .loc также невозможно

   df.loc[:,'b']=None

когда возвращается

  Cannot set dataframe with no defined index and a scalar

Ответы [ 5 ]

0 голосов
/ 16 мая 2018

Вы можете использовать concat здесь

df=pd.DataFrame(columns=['a'])
df
Out[568]: 
Empty DataFrame
Columns: [a]
Index: []

df2=pd.DataFrame(columns=['b', 'c', 'd'])
pd.concat([df,df2])
Out[571]: 
Empty DataFrame
Columns: [a, b, c, d]
Index: []
0 голосов
/ 16 мая 2018

Вот несколько способов добавить пустой столбец в пустой фрейм данных:

df=pd.DataFrame(columns=['a'])
df['b'] = None
df = df.assign(c=None)
df = df.assign(d=df['a'])
df['e'] = pd.Series(index=df.index)   
df = pd.concat([df,pd.DataFrame(columns=list('f'))])
print(df)

выход

Empty DataFrame
Columns: [a, b, c, d, e, f]
Index: []

Надеюсь, это поможет.

0 голосов
/ 16 мая 2018

Это один из способов:

df2 = df.copy()
df2 = df2.join(pd.DataFrame(columns=['b']))

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

Кроме того, это удовлетворяет вашему требованию df.empty с оценкой True, если данных не существует.

0 голосов
/ 16 мая 2018

Если вы хотите добавить несколько столбцов одновременно, вы также можете переиндексировать.

new_cols = ['c', 'd', 'e', 'f', 'g']
df2 = df.reindex(df.columns.union(new_cols), axis=1)

#Empty DataFrame
#Columns: [a, c, d, e, f, g]
#Index: []
0 голосов
/ 16 мая 2018

Если вы просто наберете df['b'] = None, тогда df.empty будет по-прежнему True, а df:

Empty DataFrame
Columns: [a, b]
Index: []

РЕДАКТИРОВАТЬ: для создания пустого df2 из столбцов df и добавленияновые столбцы, вы можете сделать:

df2 = pd.DataFrame(columns = df.columns.tolist() + ['b', 'c', 'd'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...