我正在尝试将 csv 导入到 Pandas 数据框中。我有用 1 和 0 表示的布尔变量,其中缺失值用 -9 标识。当我尝试将 dtype 指定为布尔值时,我会收到许多不同的错误,具体取决于我尝试的内容。
示例数据:test.csv
var1, var2
0, 0
0, 1
1, 3
-9, 0
0, 2
1, 7
Run Code Online (Sandbox Code Playgroud)
我尝试在导入时指定 dtype:
dtype_dict = {'var1':'bool','var2':'int'}
nan_dict = {'var1':[-9]}
foo = pd.read_csv('test.csv',dtype=dtype_dict, na_values=nan_dict)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ValueError:无法安全地将 |b1 的传递用户数据类型转换为第 0 列中的 int64 数据类型数据
我也试过指定真假值,
foo = pd.read_csv('test.csv',dtype=dtype_dict,na_values=nan_dict,
true_values=[1],false_values=[0])
Run Code Online (Sandbox Code Playgroud)
但后来我得到了一个不同的错误:
例外:必须是所有编码字节
错误的源代码说明了一些关于捕获偶尔无的信息,但无或空值正是我想要的。
我在更改postgres数据库中的表时遇到一些麻烦。我正在使用psycopg2并使用Python。我试图添加一个串行主键。花了很长的时间(大表),并投掷任何错误,所以它做了什么,但是当我去检查,新列是不存在。
我希望这是我错过的愚蠢之举,但现在我全神贯注。
import psycopg2
username = *****
password = *****
conn = psycopg2.connect(database='mydb',user=username,password=password)
query = "ALTER TABLE mytable ADD COLUMN sid serial PRIMARY KEY"
cur = conn.cursor()
cur.execute(query)
conn.close()
Run Code Online (Sandbox Code Playgroud)
我在调试时尝试的其他操作:
我正在尝试使用 psycopg2 批量插入 postgres 数据库。我正在使用 %s 和一个元组列表,但它失败并出现以下错误:
File ".../python3.6/site-packages/psycopg2/extras.py", line 1183, in execute_batch
sqls = [cur.mogrify(sql, args) for args in page]
File ".../python3.6/site-packages/psycopg2/extras.py", line 1183, in <listcomp>
sqls = [cur.mogrify(sql, args) for args in page]
TypeError: not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import psycopg2
import psycopg2.extras
conn = psycopg2.connect(
database='mydb',
user='name',
password='pass')
cur = conn.cursor()
query = "INSERT INTO my_table (tweet_id, user_id, time, text,
reply_to_user_id, reply_to_tweet_id, reply_to_handle, is_retweet,
is_quote, quote_usr_id, quote_usr_handle, quote_id, quote_text,
retweet_usr_id, retweet_usr_handle, retweet_id, longitude, latitude, …Run Code Online (Sandbox Code Playgroud)