Это довольно простой вопрос. Я хочу организовать csv определенным образом. Пока у меня это почти так, как я хочу, и это довольно быстро.Добавление столбца с суммой строк и сортировка в python
import numpy as np
import pandas as pd
import pandas.util.testing as tm; tm.N = 3
data = pd.DataFrame.from_csv('MYDATA.csv')
byqualityissue = data.groupby(["Name","Type"]).size()
df = pd.DataFrame(bytype)
formatted = df.unstack(level=-1)
formatted[np.isnan(formatted)] = 0
formatted.to_csv('bytype.csv', header=True)
ByType выглядит следующим образом:
Type Type1 Type2 Type3
Name
Company 1 10 0 3
Company 2 4 23 3
Company 3 3 2 0
Однако, я хочу это сортируется так, что компания с самой большой общей (сумма строки) будет на самом верху. В этом случае это должна быть компания 2 наверху, затем компания 1, затем компания 3. Он должен выбрать только 20 лучших клиентов, которые будут прочитаны остальным моим кодом на Python.
Name, Type1, Type2, Type3
Company 2, 4, 23, 3
Company 1, 10, 0, 3
Company 3, 3, 2, 0
Я думаю, что лучшим способом было бы суммировать итоги в другом столбце, а затем отсортировать по убыванию. Для этого я написал эту строку:
sorted = np.sum(formatted, axis=1)
, который успешно выводит итог. Я посмотрел на How to add a new column to a CSV file using Python?
И так писал:
with open('bytype.csv') as csvinput:
with open('bytype2.csv','w') as csvoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
reader = csv.reader(csvinput)
all = []
row = next(reader)
row.append('Total')
all.append(row)
for row in reader:
row.append(np.sum(formatted, axis=1))
all.append(row)
writer.writerows(all)
Но не только я не получаю выходной bytype2, но этот метод, казалось, имели в виду повторное чтение CSV, а затем добавив столбец, а затем я «все равно придется сортировать их. Должен быть более простой способ сделать это, чтобы я отсутствовал.
Просто добавьте столбец в dataframe Д.Ф. [ключ] = все, что –
@PadraicCunningham я знаю, что это, вероятно, так же просто, как это, но как именно вы добавить его? df [newkeytitle] = отсортировано? Как он знает, где в кадре данных поставить? Я преподавал сам python на прошлой неделе, но я все еще очень новый. – jenryb
yes, просто используйте новое имя col в качестве ключа и все, что вы хотите добавить в качестве значения, можете ли вы поделиться немного, если ваш файл? –