Python DataFrame.index.name被DataFrame.index.date删除

Python DataFrame.index.name被DataFrame.index.date删除,python,indexing,pandas,Python,Indexing,Pandas,我对熊猫还很陌生,对蟒蛇也很陌生,所以请耐心听我说。问题是: 我从excel中读取了一些数据,包括一些日期。我使用这些日期作为索引,它们的格式为%Y-%m-%d%H:%m:%S。但我需要这些索引的格式为%Y-%m-%d。所以我写了 df.index = df.index.date # where df is a DataFrame object 我发现在这个df.index.name之后是,但应该是Date。对于我来说,似乎很奇怪为什么在.date转换之后应该更改/删除.name属性。我知道我

我对熊猫还很陌生,对蟒蛇也很陌生,所以请耐心听我说。问题是:

我从excel中读取了一些数据,包括一些日期。我使用这些日期作为索引,它们的格式为%Y-%m-%d%H:%m:%S。但我需要这些索引的格式为%Y-%m-%d。所以我写了

df.index = df.index.date # where df is a DataFrame object
我发现在这个df.index.name之后是,但应该是Date。对于我来说,似乎很奇怪为什么在.date转换之后应该更改/删除.name属性。我知道我可以简单地把它放回df.index.name=Date,但是对于这种行为是否有任何解释,或者它是一个bug


提前感谢。

所以看起来您只是想格式化输出日期。因此,我建议将索引保留为DatetimeIndex,然后在编写时对其进行格式化。to_csv方法有一个日期格式参数,您可以传递strftime字符串

In [21]: ts = pd.DataFrame(np.random.randn(20, 2), index=pd.DatetimeIndex(start='2014-01-01
', periods=20, freq='min'))


In [23]: ts.to_csv('tst.csv', date_format='%Y-%m-%d')

In [24]: !cat tst.csv
,0,1
2014-01-01,0.23269024172796468,-0.27276285241328363
2014-01-01,-2.1271569576784652,-0.08828528516158064
2014-01-01,-0.7476540707009801,0.4496366704379928
2014-01-01,-1.278025433730537,1.9559942454312738
2014-01-01,-0.5197557973521872,-0.38696497057942586
2014-01-01,1.907212175479462,0.08269395500820262
2014-01-01,-0.002980557062394977,1.649695381207261
2014-01-01,-0.9676320141522591,0.549518266575642
2014-01-01,-1.3499641850605548,-0.11695278340333974
2014-01-01,0.3281427666328896,0.2290718384099928
2014-01-01,0.29854271481529915,-1.606564949527949
2014-01-01,-1.8476324099199142,-1.1062031058677215
2014-01-01,-0.2625937089406767,0.6743539439246344
2014-01-01,0.1901494293074155,2.830381213725509
2014-01-01,-0.16171736635213055,-0.6913561112174935
2014-01-01,-0.6340530961142582,0.1944027320940862
2014-01-01,0.1875828513714546,0.3539781699433568
2014-01-01,1.502398492411021,0.9554844690144768
2014-01-01,0.40825706445611654,-0.6555754482696242
2014-01-01,-1.9870063518613181,0.8300825796678137

excel似乎没有日期格式选项。如果愿意,您可以在上提交问题/功能请求。

没关系,我知道了。返回datetime.date对象的数组。通过声明df.index=df.index.date,我完全覆盖了df.index,只分配了datetime.date对象的值,因此必须为name属性分配一个新的值。现在我了解了行为,剩下的唯一一个问题是:有没有更好的方法来实现这一点?您如何处理需要以这种方式格式化的索引?这里有index.format“%Y-%m-%d”方法,它返回字符串列表。你是从高频率数据到低频率数据吗?在这种情况下,您需要查看重新采样。不,我不想重新采样数据。我想将我的DataFrame对象写入excel,但第一列不应包含小时,因为小时是作为第二列单独添加的。嗨,Tom,谢谢你的回答。我不熟悉这条线!cat tst.csv,但我没有得到你得到的结果。date_format选项用于datetime对象,因此DatetimeIndex对象的格式不是由它来设置的。!cat是用于显示文件的unix命令。你用的是什么版本的熊猫?看起来to_格式选项在技术上已经完成,Windows将很快出现在PyPI上。嗨,Tom,谢谢你的澄清。我对熊猫的看法是。当更新到.13时,我得到了正确的结果,因为date_format属性应用于pandas的-13版本中的所有数据类型。再次感谢你的帮助。你的答案正是我想要的。Best.In.13 date_format属性引用索引、列和值中的所有datetime对象。这里是链接