使用pandas设置日期范围作为索引的数据框,但当设置后,所有值都变为NaN。

3
我对读取Excel文件后的数据框进行了操作。我的代码如下:
import pandas as pd
sheetname = "3月"
required_cols = list(range(3,34))

df1 = pd.read_excel('./weather_data/konpira_plan.xls',
                    sheet_name=sheetname,usecols=required_cols,inplace=True)
rows=[2,4,5,6,9,10,11,14,15,16,19,20,21]
df=df1.loc[rows].T
cols=['Date','A','B','C','D','E','F','G','H','I','J','K','L']
df.columns = cols
df.fillna(0,inplace=True)
df

我的输出结果是这样的:点击此处查看图片描述 我想把索引从2019/03/01改为日期范围,但是当我使用以下函数进行更改时:
date_index = pd.date_range('2019/03/01', periods=31,freq='D')
df2=df.reindex(date_index)

我得到了这个输出: 所有的值都变成了 NaN 。 我刚开始接触 pandas 和数据框架。 在这里输入图片描述 如果我使用多个 Excel 表格,它只适用于一个表格,否则会出错。
AttributeError: 'collections.OrderedDict' object has no attribute 'loc'

在这一点上:

df_w=df1.loc[rows].T

如果使用 pd.read_excel 没有指定表名读取 Excel 文件,则输出将是一个包含每个工作表 DataFrame 的字典。您可以使用 for sheet_name, df1 in your_dictionary_name.items(): 迭代字典。 - Shijith
好的,但是你的字典名称.items()是什么? - Krupali Mistry
当 sheet_name=None 时会出现错误。 - Krupali Mistry
它只升级一个Excel表格,而不能与其他Excel表格一起使用。 - Krupali Mistry
@Shijith 这取决于月份的天数,如果是3天,则是三月,范围将为(3,34),如果是4天,则是四月,范围将为(3,33)。 - Krupali Mistry
显示剩余2条评论
1个回答

2

为通用解决方案分配索引并通过 periods=len(df) 根据行数创建date_range,如可能应更改行数:

date_index = pd.date_range('2019/03/01', periods=len(df),freq='D')
df.index = date_index

谢谢伙计,它起作用了,但如何将df保存为Excel / CSV文件? - Krupali Mistry
1
@KrupaliMistry 通过 df.to_csv(filename) - U13-Forward
1
@KrupaliMistry - 或者 df.to_excel(filename) - DataFrame.to_csvDataFrame.to_excel - jezrael
请先仔细阅读文档,以便使用df.to_excel(filename, sheet_name)函数将数据框保存到多个Excel工作表中。 - Shijith
@KrupaliMistry - “这只适用于一个Excel表格,如果我使用多个Excel表格,它会给我错误:” - 您的多个Excel表格的代码是什么?每个表格都具有相同的格式,并且需要应用我的答案中的解决方案吗? - jezrael
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接