有一个DataFrame,其中有“事件开始日期”(日期),“从事件日期到结束日期的天数”(int64),其中缺少值。任务是填写缺失值,假设所有缺失值的结束日期相同。
尝试以不同的方式进行,但在工作过程中不断出现错误。包括在计算结束日期 - 开始日期时,转换为的结果天数int
给出了太大的值。
也收到此错误“[Int64Index([ 0, 81, 558, 424, 121, 55, 155, 0, 189, 289,\n ...\n 29, 15, 519, 413, 239, 0, 45, 0, 602, 0],\n dtype='int64', length=23699)] 在 [columns]"
data['day_exposition_status'] = data['days_exposition'].isna()
data['days_exposition'].fillna(0, inplace=True)
data['days_exposition'] = data['days_exposition'].astype('int')
zero_days_exposition = datetime.datetime(2020, 4, 27) - data['first_day_exposition']
data['days_exposition'] = data[data['days_exposition']].replace(to_replace = 0, value = zero_days_exposition)
数据框示例 - https://pastebin.com/vWeyedxv
Полностью текст ошибки
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-24-cccce5c1358b> in <module>
1 data['days_exposition'] = data['days_exposition'].astype('int')
2 zero_days_exposition = datetime.datetime(2020, 4, 27) - data['first_day_exposition']
----> 3 data['days_exposition'] = data[data['days_exposition']].replace(to_replace = 0, value = zero_days_exposition)
/opt/conda/lib/python3.7/site-packages/pandas/core/frame.py in __getitem__(self, key)
2984 if is_iterator(key):
2985 key = list(key)
-> 2986 indexer = self.loc._convert_to_indexer(key, axis=1, raise_missing=True)
2987
2988 # take() does not accept boolean indexers
/opt/conda/lib/python3.7/site-packages/pandas/core/indexing.py in _convert_to_indexer(self, obj, axis, is_setter, raise_missing)
1283 # When setting, missing keys are not allowed, even with .loc:
1284 kwargs = {"raise_missing": True if is_setter else raise_missing}
-> 1285 return self._get_listlike_indexer(obj, axis, **kwargs)[1]
1286 else:
1287 try:
/opt/conda/lib/python3.7/site-packages/pandas/core/indexing.py in _get_listlike_indexer(self, key, axis, raise_missing)
1090
1091 self._validate_read_indexer(
-> 1092 keyarr, indexer, o._get_axis_number(axis), raise_missing=raise_missing
1093 )
1094 return keyarr, indexer
/opt/conda/lib/python3.7/site-packages/pandas/core/indexing.py in _validate_read_indexer(self, key, indexer, axis, raise_missing)
1175 raise KeyError(
1176 "None of [{key}] are in the [{axis}]".format(
-> 1177 key=key, axis=self.obj._get_axis_name(axis)
1178 )
1179 )
KeyError: "None of [Int64Index([ 0, 81, 558, 424, 121, 55, 155, 0, 189, 289,\n ...\n 29, 15, 519, 413, 239, 0, 45, 0, 602, 0],\n dtype='int64', length=23699)] are in the [columns]"
如果我正确理解了这个问题:
结果:
@MaxU 谢谢,它有效,告诉我是否有机会,当我在考虑解决方案时,我写了这段代码,但它有点错误