[英]New column added to Dataframe keeps dissapearing
我需要清理我的数据,在那里我删除了有缺陷的行。 为此,我创建了一个 Day_number 列来保存要在过滤中使用的天数。
df = pd.read_csv(file_loc)
cols = list(df.columns.values)
cols
df = df[[cols[-1]]+ [cols[9]]]
df.rename(columns={'mean-ghi': 'GHI'}, inplace = True)
df_filtered_nan = df.drop(df[df.GHI.isnull()].index)
df_filtered_nan['Day_number'] = df.Datetime.apply(lambda x: x.day)
df_filtered_nan.reset_index(drop = True, inplace = True)
这导致 df_filtered_nan 的以下 dataframe :
但是,当我执行过滤步骤时,由于某种原因 Day_number 列消失了,并且出现属性错误。
months_days_killed_count = {}
days_killed_count = 0
for day in df_filtered_nan.Day_number.unique():
daywise = len(df_filtered_nan[df_filtered_nan.Day_number == day])
print(daywise)
if daywise != 1440:
df_filtered_nan = df.drop(df_filtered_nan[df_filtered_nan.Day_number == day].index)
days_killed_count += 1
else:
continue
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-117-c78d4b39ef13> in <module>
24 days_killed_count = 0
25 for day in df_filtered_nan.Day_number.unique():
---> 26 daywise = len(df_filtered_nan[df_filtered_nan.Day_number == day])
27 print(daywise)
28 if daywise != 1440:
D:\Anaconda\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
5137 if self._info_axis._can_hold_identifiers_and_holds_name(name):
5138 return self[name]
-> 5139 return object.__getattribute__(self, name)
5140
5141 def __setattr__(self, name: str, value) -> None:
AttributeError: 'DataFrame' object has no attribute 'Day_number'
现在当我打印 df_filtered_nan dataframe 我得到:
所以,我一辈子都无法弄清楚我做错了什么。 请帮忙:)
在这一行
df_filtered_nan = df.drop(df_filtered_nan[df_filtered_nan.Day_number == day].index)
您正在从df
而不是从df_filtered_nan
drop
ping 行并将其分配回df_filtered_nan
! 因此, if
命中并执行此行, df_filtered_nan
就会成为df
的裁剪版本,它没有Day_number
列; 因此在for
循环的下一轮出现错误。
你可能需要
df_filtered_nan = df_filtered_nan.drop(df_filtered_nan[df_filtered_nan.Day_number == day].index)
即从df_filtered_nan
中删除。 (如果您这样做,IMO 也会更具可读性:
row_indexes_to_drop = df_filtered_nan[df_filtered_nan.Day_number == day].index
df_filtered_nan = df_filtered_nan.drop(row_indexes_to_drop)
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.