oro*_*ome 2 python join dataframe pandas
我很困惑为什么以下内容pandas
没有成功将 A 列的最后两个值分配给 B 列的前两个条目:
df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7], 'B': [10, 20, 30, 40, 50, 60, 70]})
df = df.join(pd.DataFrame({'C': ['a', 'b', 'c', 'd', 'e', 'f', 'g']}))
df['B2'] = df.B.shift(2)
df[:2].B2 = list(df[-2:].A)
Run Code Online (Sandbox Code Playgroud)
让我感到困惑的是,在(显然)等效的“真实”应用程序中,它似乎确实可以工作(并产生一些奇怪的行为)。
为什么最终分配无法更改数据帧中两个条目的值?
它可以工作,这就是它阴险的原因,请参见此处:http ://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
一般来说,对于多类型框架,它取决于它何时工作的构造(例如,如果您一次创建它,我认为它总是有效)。由于您是在(通过 join)之后创建它的,所以它依赖于底层的 numpy 视图创建机制。
永远不要像这样分配,使用loc
df.loc[:2,'B2'] = ....
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3654 次 |
最近记录: |