我有一个如下所示的数据框,我使用NDCSPart_df
截取了一个名为NDCSPart_df = Register_df.iloc[:, :17]
的切片
此NDCSPart_df
需要由列长度相同但值不同,行数相同或更多的最新数据框NOTES_df
更新。
我使用“ MainDocID”比较NDCSPart_df
和NOTES_df
的行以识别任何更改,如果有任何更改,将为NDCSPart_df
中的行分配值。 NOTES_df
中具有相同“ MainDocID”的行。
for i in ChangedDocumentIDDict.keys():
NDCSPart_df.loc[NDCSPart_df["MainDocID"]==i,:].update(NOTES_df.loc[NOTES_df["MainDocID"]==i,:])
这会给我以下警告,
C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ core \ frame.py:5516: SettingWithCopyWarning:试图在一个副本上设置一个值 从DataFrame切片。尝试使用.loc [row_indexer,col_indexer] = 值代替
请参阅文档中的警告: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self [col] = expressions.where(遮罩,此,那)
同样,我尝试了以下代码:
for i in ChangedDocumentIDDict.keys():
NDCSPart_df.loc[NDCSPart_df["MainDocID"]==i,:]= NOTES_df.loc[NOTES_df["MainDocID"]==i,:]
有类似警告:
C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py:190: SettingWithCopyWarning:试图在一个副本上设置一个值 从DataFrame切片
请参阅文档中的警告: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self._setitem_with_indexer(索引器,值) C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ ipykernel_launcher.py:3: SettingWithCopyWarning:试图在一个副本上设置一个值 从DataFrame切片
请参阅文档中的警告: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy 这与ipykernel软件包分开,因此我们可以避免这样做 直到进口
但是我担心的是,分配失败,并且填充了NaN
个值,如第二个快照所示,该值应具有针对NOTES_df
的索引78的行的值。
我正在使用Python 3.7.3,pandas 0.24.2,并且我尝试了Python 3.6.6,pandas 0.23.4,结果相同。
我的问题是:
NOTES_df
的行分配给NDCSPart_df
?答案 0 :(得分:1)
这更像是条件过滤器后两个df的index
不同,因此我们需要再多添加info Variables set via logging commands are not persistent between agent
.values