我使用的DataFrame结构如下所示。有200个独特的列和45个独特的日期。
A100 A101
DATE
2016-09-25 NaN 4
2016-10-23 6 NaN
我想确定第一个和最后一个有效索引之间的时间。为此,我将其用于循环:
time_to_finish = dict()
for col in df:
first_date = df[col].first_valid_index()
last_date = df[col].last_valid_index()
time = last_date - first_date
time_to_finish[col] = time
问题是我收到类型错误TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType'
我不明白为什么,因为如果我选择一列并自行查找日期,我就不会收到错误。例如,这很好用:
first_date = df['A100'].first_valid_index()
last_date = df['A100'].last_valid_index()
last_date - first_date
我收到了有效的输出,例如Timedelta('20 days 00:00:00')
另外,如果我使用first_date或last_date作为字典值而不是变量时间,我会得到一个没有错误的完整字典。
为什么这不能在循环中工作?