我使用read_clipboard将数据从Excel导入python大熊猫。
import pandas as pd
df = pd.read_clipboard()
列索引是月份(一月,二月,...,十二月)。行索引是产品名称(橙色,香蕉等)。单元格中的值就是月销售额。
如何导出以下格式的csv
month;product;sales
为了更加直观,我在第一个图像中显示了输入,在第二个图像中显示了输出。
答案 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=';')