Вам нужно проверить, есть ли у вашего компьютера 64-разрядная или 32-разрядная операционная система, то же самое касается JDK (64-разрядная / 32-разрядная версия), а также для Eclipse (64-разрядная / 32-разрядная) .
Убедитесь, что они все одинаковые; если нет, вам нужно загрузить тот, который соответствует вашей битте.
Большинство ответов не сделало вывод достаточно, и панды reindex_axis метод немного утомительно, следовательно я предлагаю простую функцию для перемещения произвольного числа столбцов к любой позиции с помощью словаря где ключ = имя столбца и значение = положение для перемещения в. Если Ваш кадр данных будет большой передачей, Верной для 'big_data' затем, то функция возвратит заказанный список столбцов. И Вы могли использовать этот список для разрезания данных.
def order_column(df, columns, big_data = False):
"""Re-Orders dataFrame column(s)
Parameters :
df -- dataframe
columns -- a dictionary:
key = current column position/index or column name
value = position to move it to
big_data -- boolean
True = returns only the ordered columns as a list
the user user can then slice the data using this
ordered column
False = default - return a copy of the dataframe
"""
ordered_col = df.columns.tolist()
for key, value in columns.items():
ordered_col.remove(key)
ordered_col.insert(value, key)
if big_data:
return ordered_col
return df[ordered_col]
# e.g.
df = pd.DataFrame({'chicken wings': np.random.rand(10, 1).flatten(), 'taco': np.random.rand(10,1).flatten(),
'coffee': np.random.rand(10, 1).flatten()})
df['mean'] = df.mean(1)
df = order_column(df, {'mean': 0, 'coffee':1 })
>>>
col = order_column(df, {'mean': 0, 'coffee':1 }, True)
col
>>>
['mean', 'coffee', 'chicken wings', 'taco']
# you could grab it by doing this
df = df[col]
import numpy as np
import pandas as pd
df = pd.DataFrame()
column_names = ['x','y','z','mean']
for col in column_names:
df[col] = np.random.randint(0,100, size=10000)
можно испытать следующие решения:
Решение 1:
df = df[ ['mean'] + [ col for col in df.columns if col != 'mean' ] ]
Решение 2:
<час>df = df[['mean', 'x', 'y', 'z']]
<час> Решение 3:
col = df.pop("mean")
df = df.insert(0, col.name, col)
<час> Решение 4:
df.set_index(df.columns[-1], inplace=True)
df.reset_index(inplace=True)
<час> Решение 5:
cols = list(df)
cols = [cols[-1]] + cols[:-1]
df = df[cols]
<час> решение 6:
order = [1,2,3,0] # setting column's order
df = df[[df.columns[i] for i in order]]
Решение 1:
процессорное время: пользователь 1,05 мс, sys: 35 Вµs, общее количество: Стенное время на 1,08 мс: 995 Вµs
Решение 2 :
процессорное время: пользователь 933 Вµs, sys: 0 нс, общее количество: в 933 Вµs Стенных раза: 800 Вµs
Решение 3 :
процессорное время: пользователь 0 нс, sys: 1,35 мс, общее количество: Стенное время на 1,35 мс: 1,08 мс
Решение 4 :
процессорное время: пользователь 1,23 мс, sys: 45 Вµs, общее количество: Стенное время на 1,27 мс: 986 Вµs
Решение 5 :
процессорное время: пользователь 1,09 мс, sys: 19 Вµs, общее количество: Стенное время на 1,11 мс: 949 Вµs
Решение 6 :
процессорное время: пользователь 955 Вµs, sys: 34 Вµs, общее количество: в 989 Вµs Стенных раз: 859 Вµs
Я думаю, что это - немного более опрятное решение:
df.insert(0,'mean', df.pop("mean"))
Это решение несколько аналогично решению @JoeHeffer, но это - один лайнер.
Здесь мы удаляем столбец "mean"
из кадра данных и присоединяем его к индексу 0
с тем же именем столбца.