Каков наилучший способ преобразования данных в конкретный формат? - PullRequest
0 голосов
/ 24 октября 2019

У меня есть такой фрейм данных, как

df_given =    B   D   X
           1  B1  D1  X1
           2  B2  D2  X2
           3  B3  D3  X3
           4  B4  D4  X4

, и я хотел бы превратить его в

 df_want =    A   B   C   D
           1  0   B1  0   D1
           2  0   B2  0   D2
           3  0   B3  0   D3
           4  0   B4  0   D4

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

 df_want = pd.DataFrame(columns = ['A', 'B', 'C', 'D'])
 df_want.append(df_given)

дает

    A   B   C   D   X
 1  NaN B1  NaN D1  X1
 2  NaN B2  NaN D2  X2
 3  NaN B3  NaN D3  X3
 4  NaN B4  NaN D4  X4

NaN не являются проблемой. Дополнительные столбцы, такие как X,В любом случае, это правильный путь?

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

IIUC, используйте то, что рекомендует @ BEN.T:

Где,

print(df)

    B   D   X
1  B1  D1  X1
2  B2  D2  X2
3  B3  D3  X3
4  B4  D4  X4

Использовать переиндексацию,

df.reindex([*'ABCD'], axis=1, fill_value=0)

Вывод:

   A   B  C   D
1  0  B1  0  D1
2  0  B2  0  D2
3  0  B3  0  D3
4  0  B4  0  D4
0 голосов
/ 24 октября 2019

Вот код для перестановки столбцов, удаления столбца, добавления столбца.

import pandas as pd
import numpy as np

# step 1: create sample dataframe
df = pd.DataFrame(
    dict(B=['B1', 'B2', 'B3', 'B4'],
         D=['D1', 'D2', 'D3', 'D4'],
         X=['X1', 'X2', 'X3', 'X4']
        )
)

print('original dataframe:')
print(df)
print()

# step 2: save the columns in a list
cols = df.columns

print('print the column names:')
print(cols)
print()

# step 3: change the column order, exclude 'X'
new_col_order = ['D', 'B']

# step 4a: create new dataframe
df_new = df[new_col_order]

print('new dataframe: ')
print(df_new)
print()

# step 4b: alternative way, use 2 sets of square brackets to call the columns in a list
print('original dataframe, re-arrange columns: ')
print(df[['D', 'B']])
print()

# step 5: add a new column to dataframe
df_new['A'] = np.NaN

print('new dataframe with added column: ')
print(df_new)
print()

enter image description here

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