如何使用Pandas的df.loc根据条件同时修改多列?
解决方案:条件同时修改DataFrame多列数据
要同时修改符合条件的x和y列,只需在df.loc的列选择部分传入包含目标列名的列表,再为这些列赋值即可。
示例代码(分别给x、y赋值不同值)
import pandas as pd data = {'s' : ["placementTop","placementProductPage","safgasf", "aslgkmalksg", "ıowjsakguıwa", "placementTop","placementProductPage", "placementTop","placementProductPage",], "State": ["enabled","paused","sagasg", "sagaskg", "sagkşlaksg", "sagaskg", "sagkşlaksg", "sagaskg", "sagkşlaksg"], "x": [10,20,25,30,5,30,5,30,5], "y" : [12,20,25,30,5,20,25,30,5]} df = pd.DataFrame(data) # 针对符合条件的行,同时修改x和y列的值 df.loc[(df["s"] == "placementTop") & (df["State"] == "enabled"), ["x", "y"]] = [2, 4] print(df)
运行输出
s State x y 0 placementTop enabled 2 4 1 placementProductPage paused 20 20 2 safgasf sagasg 25 25 3 aslgkmalksg sagaskg 30 30 4 ıowjsakguıwa sagkşlaksg 5 5 5 placementTop sagaskg 30 20 6 placementProductPage sagkşlaksg 5 25 7 placementTop sagaskg 30 30 8 placementProductPage sagkşlaksg 5 5
补充:给多列赋相同值
如果需要给x和y设置同一个值,直接传入单个值即可:
df.loc[(df["s"] == "placementTop") & (df["State"] == "enabled"), ["x", "y"]] = 0
说明
df.loc的第一个参数是行筛选条件,第二个参数是列名列表,可精准选中目标单元格- 分别赋值时,赋值列表的长度要和列数一致;单个值会自动广播到所有选中列
内容的提问来源于stack exchange,提问作者Shamna Sama
相关产品推荐
相关产品推荐

