Pandas DataFrame не возвращает ничего - PullRequest
0 голосов
/ 09 июня 2018

Я хочу добавить столбец 1 в начале кадра данных pandas, который создается из внешнего файла данных «ex1data1.txt».Я написал следующий код.Проблема в том, что команда print(data) в конце возвращает None.Что не так с этим кодом?Я хочу, чтобы data был центром данных панд.raw_data и X0_ в порядке, я их напечатал.

import numpy as np
import pandas as pd
raw_data = pd.read_csv('ex1data1.txt', header= None, names= ['x1','y'])
X0_ = np.ones(len(raw_data))
idx = 0
data = raw_data.insert(loc=idx, column='x0', value=X0_)
print(data)

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Другое решение может выглядеть так:

import numpy as np
import pandas as pd
raw_data = pd.read_csv('ex1data1.txt', header= None, names= ['x1','y'])

raw_data.insert(loc=0, column='x0', value=1.0)

print(raw_data)
0 голосов
/ 09 июня 2018

pd.DataFrame.insert

Вы можете использовать pd.DataFrame.insert, но обратите внимание, что это решение на месте и не требует переназначения.Вам также может понадобиться явно установить dtype на int:

df = pd.DataFrame([[1, 2, 3], [4, 5, 6]],
                  columns=['col1', 'col2', 'col3'])

arr = np.ones(len(df.index), dtype=int)
idx = 0
df.insert(loc=idx, column='col0', value=arr)

print(df)

   col0  col1  col2  col3
0     1     1     2     3
1     1     4     5     6

Прямое определение + переупорядочение

Одно из простых решений - просто добавить строку и перейти к столбцу в начале вашегоdataframe.Вот полный пример:

df = pd.DataFrame([[1, 2, 3], [4, 5, 6]],
                  columns=['col1', 'col2', 'col3'])

df['col0'] = 1  # adds column to end of dataframe
cols = [df.columns[-1]] + df.columns[:-1].tolist()  # move last column to front
df = df[cols]  # apply new column ordering

print(df)

   col0  col1  col2  col3
0     1     1     2     3
1     1     4     5     6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...