Значение столбца строки экспорта данных в pandas - PullRequest
0 голосов
/ 30 августа 2018

Я импортирую данные из Excel в панды Python с помощью read_clipboard.

   import pandas as pd
    df = pd.read_clipboard()

Индекс столбца - месяц (январь, февраль, ..., декабрь). Индекс строки - название товара (апельсин, банан и т. Д.). И значение в ячейках - это месячные продажи.

Как я могу экспортировать CSV в следующем формате

month;product;sales

Чтобы сделать его более наглядным, я показываю входные данные в первом изображении и то, как выходные данные должны быть во втором изображении.

enter image description here

enter image description here

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Я наконец решил это благодаря вашему совету: используя unstack

df2 = df.transpose()
df3 = df2 =.unstack()
df3.to_csv('my/path/name.csv', sep=';')
0 голосов
/ 30 августа 2018

Вы также можете использовать пакет xlrd. Образец Book1.xlsx:

        january february    march
Orange     4       2         4
banana     2       6         3
apple      5       1         7

пример кода:

import xlrd

book = xlrd.open_workbook("Book1.xlsx")

print(book.sheet_names())

first_sheet = book.sheet_by_index(0)
row1 = first_sheet.row_values(0)

print(first_sheet.nrows)

for i in range(len(row1)):
    if i !=0:
        next_row = first_sheet.row_values(i)
        for j in range(len(next_row)-1):
                print("{};{};{}".format(row1[i],next_row[0],next_row[j+1]))

Результат:

january;Orange;4.0
january;Orange;2.0
january;Orange;4.0
february;banana;2.0
february;banana;6.0
february;banana;3.0
march;apple;5.0
march;apple;1.0
march;apple;7.0
0 голосов
/ 30 августа 2018

Если это только так, это может решить эту проблему:

month = df1.columns.to_list()*3
product = []
sales=[]
for x in range(0,2):
    product += [df1.index[x]]*12
    sales += df1.iloc[x].values.tolist()

df2 = pd.DataFrame({'month': month, 'product': product, 'sales': sales})

Но вам нужно искать более разумный способ, если у вас большой Dataframe, например, то, что @Jon Clements предложил в комментарии.

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