python - 用python pandas中的数据框B的行替换数据框A的行子集
问题描述
我正在尝试用 Python Pandas 中数据框的值列(总共 250 行)替换数据框中第 500 到 750 行中col1
的df_A
值。col1
df_B
我试着这样做
df_A.col1.iloc[500:750] = df_B.col1
但这会产生臭名昭著的
A value is trying to be set on a copy of a slice from a DataFrame
并且中的值df_A.col1.iloc[500:750]
被NaN
s 替换。那么如何在不使用 for 循环的情况下用 Pandas 中另一个数据帧中的行替换几行呢?
解决方案
尝试使用 loc 代替:
import pandas as pd
df=pd.DataFrame(np.arange(15).reshape(5,3), columns=['a0','a1','a2'])
dg=pd.DataFrame(np.arange(9).reshape(3,3), columns=['b0','b1','b2'])
print('df=', df)
print('\ndg=', dg)
#replacement of [5,8,11] by [1,4,7]
df.loc[1:3, 'a2']=dg.b1.values
print("\ndf (after replacement) \n ",df)
df= a0 a1 a2
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
4 12 13 14
dg= b0 b1 b2
0 0 1 2
1 3 4 5
2 6 7 8
df (after replacement)
a0 a1 a2
0 0 1 2
1 3 4 1
2 6 7 4
3 9 10 7
4 12 13 14
推荐阅读
- ios - UIView roundedCorners 和 UIBezierPath bezierPathWithRoundedRect 产生略有不同的结果
- web - 我希望我的网络能够操作我硬盘中的文件。我应该怎么办?
- hybris - SAP Hybris 6.2 中的 B2B 配方安装问题
- javascript - Javascript:如何将函数作为参数传递?
- blazor - Blazor 呈现组件但立即无法连接
- c++ - 在单个翻译单元程序中获取静态数据成员的地址时出现链接器错误
- javascript - 如何进行异步 Redis 订阅者调用
- python - 获取向类添加新元素的日期
- google-tag-manager - 如何使用谷歌标签管理器跟踪不是链接也不是按钮的元素的点击?
- jenkins - 使用 groovy 脚本定期构建所有 jenkins 作业