熊猫数据框导出行列值

时间:2018-08-29 22:58:17

标签: pandas csv

我使用read_clipboard将数据从Excel导入python大熊猫。

   import pandas as pd
    df = pd.read_clipboard()

列索引是月份(一月,二月,...,十二月)。行索引是产品名称(橙色,香蕉等)。单元格中的值就是月销售额。

如何导出以下格式的csv

month;product;sales

为了更加直观,我在第一个图像中显示了输入,在第二个图像中显示了输出。

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:2)

您也可以使用xlrd软件包。 样本书1.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

答案 1 :(得分:0)

如果仅是这种情况,则可以解决该问题:

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})

但是,如果您有更大的数据框,则需要寻找更聪明的方法,例如注释中建议的@Jon Clements。

答案 2 :(得分:0)

我终于根据您的建议解决了它:使用unstack

df2 = df.transpose()
df3 = df2 =.unstack()
df3.to_csv('my/path/name.csv', sep=';')