假设我有以下 df:
import pandas as pd
data_dic = {
"a": [0,0,1,2],
"b": [0,3,4,5],
"c": [6,7,8,9]
}
df = pd.DataFrame(data_dic)
Run Code Online (Sandbox Code Playgroud)
结果:
a b c
0 0 0 6
1 0 3 7
2 1 4 8
3 2 5 9
Run Code Online (Sandbox Code Playgroud)
我需要根据条件将值从上述列传递到新列:
if df.a > 0 then value df.a
else if df.b > 0 then value df.b
else value df.c
Run Code Online (Sandbox Code Playgroud)
现在我尝试:
df['value'] = [x if x > 0 else 'ww' for x in df['a']]
Run Code Online (Sandbox Code Playgroud)
但不知道如何在此输入更多条件。
预期结果:
a b c value
0 0 …Run Code Online (Sandbox Code Playgroud) 当我抓取包含使用无头选项的产品的页面时,我得到不同的结果。
对于同一问题,一次我得到的结果未排序,另一次得到正确排序的结果。
硒火狐浏览器:
firefox_options = Options()
firefox_options.headless = True
browser = webdriver.Firefox(options=firefox_options, executable_path=firefox_driver)
Run Code Online (Sandbox Code Playgroud)
根据这篇文章:
“当使用无头选项时,Firefox 不会发送不同的标头”。
如何使用无头选项从抓取中获得恒定的结果?
更新:
事实证明,广告弹出窗口隐藏了价格排序菜单。通过设置DebanjanB发布的恒定窗口大小,问题得到了解决。
感谢您的任何建议
python selenium headless-browser geckodriver firefox-headless
假设我有两个如下所示的 df,在列“a”和“b”上具有相同的键值:
df1
a b c
0 0 3 6
1 0 3 7
2 1 4 8
3 2 5 9
Run Code Online (Sandbox Code Playgroud)
df2
a b d
0 0 3 10
1 0 3 10
2 1 4 12
3 2 5 13
Run Code Online (Sandbox Code Playgroud)
如何合并它们而不重复?
合并 df 然后删除重复项的选项并不令人满意
我尝试使用下面的代码来做到这一点,但这会创建重复的行并显着增加文件容量。
df = pd.merge(df1, df2, on=['a', 'b'], how='left', validate='many_to_many')
df = pd.merge(df1, df2, on=['a', 'b'], how='inner')
Run Code Online (Sandbox Code Playgroud)
预期结果:
a b c d
0 0 3 6 10
1 0 3 7 10
2 1 4 …Run Code Online (Sandbox Code Playgroud)