为什么Panda没有正确读取值?我正试图通过数据帧中的vlookup找到常用项目。
请注意,突出显示的黄色值未显示在输出中,但是匹配。
作为df1中的简单示例,我有:
A B C D
gg vv #manually entered data 1.82 Betlink1
Adelaide United Newcastle Jets 2.32 Betlink2
aa aa aa aa
在df2中
A B C D E
13 Adelaide United Newcastle Jets 2 Betlink3
14 gg vv #manually entered data 1 Betlink4
输出:
AA AB AC O2 AE EW O1 DA
14 gg vv 1.82 Betlink1 gg v vv 1 Betlink4
预期:
AA AB AC O2 AE EW O1 DA
14 gg vv 1.82 Betlink1 gg v vv 1 Betlink4
13 Adelaide United New Castle Jets 2.32 Betlink2 (val of AC)2 Betlink3
为什么这样做?刮数据不同吗?似乎熊猫不一致地查看了数据。如何在csv中编辑pandas数据,以便它不会这样做。
有没有办法通过刮硒来纠正这个问题? 硒
import csv
import os
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.set_window_size(1024, 600)
driver.get('https://www.betfair.com.au/exchange/plus/football')
time.sleep(7)
langs = driver.find_elements_by_css_selector("ul.runners > li:nth-child(1)")
langs_text = []
for lang in langs:
langs_text.append(lang.text)
directory = 'C:/331.csv'
with open(directory, 'a', newline='', encoding="utf-8") as outfile:
writer = csv.writer(outfile)
for row in zip(langs_text):
writer.writerow(row)
或者这更像是熊猫问题:
import pandas as pd
import time
time.sleep(0)
df1 = pd.read_csv('C:\\33.csv',
index_col=False,
usecols=[0, 1, 2, 3],
names=["EW", "WE", "DA", "DD"],
header=None)
df2 = pd.read_csv('C:\\33.csv',
index_col=False,
usecols=[0, 1, 2, 3, 4],
names=["AA", "AB", "AC", "AD", "AE"],
header=None)
ZF= df1.EW.str.split(' v ').apply(lambda x : [y.split(' ')[0] for y in x]).apply(' v '.join)
df1['EW'] = ZF
df1['EW'] = df1['EW'] + ' v ' + df1['WE']
df1['WE'] = df1['DA']
df1['DA'] = df1['DD']
print(df1.head())
df2['EW'] = df2['AB'] + ' v ' + df2['AC']
#print(df2.head())
#df2['EW'] = df2['AB'] + ' v ' + df2['AC']
df3 = pd.merge(df2, df1, on='EW')
df3 = df3.rename(columns={'WE':'O1','AD':'O2'})
df3['D'] = df3['O2'].sub(df3['O1'], fill_value=0)
我在Excel中使用vlookup公式尝试了这个,没有这样的问题。
我认为csv数据是以某种方式处理的,也许刮不是问题,而是你如何使用pandas来处理它。奇怪的是,有时工作是有效的,有时则不然。有办法解决这个问题吗?我看过细胞,看起来没有任何差距,所以我不知道为什么找不到匹配。
csv文件可能已损坏,但不太可能,因为它每次都是新创建的csv。
答案 0 :(得分:1)
更改为以下内容,不应出现任何问题。
SELECT num1, num2
FROM position
WHERE num1 <> 0 AND num2 <> 0
ORDER BY positiondatetime DESC ;