小编Ree*_*een的帖子

Pandas read_csv,读取一个带有指定为 int 的缺失值的布尔值

我正在尝试将 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)

但后来我得到了一个不同的错误:

例外:必须是所有编码字节

错误的源代码说明了一些关于捕获偶尔无的信息,但无或空值正是我想要的。

python csv boolean missing-data pandas

5
推荐指数
1
解决办法
1685
查看次数

使用psycopg时表不会改变

我在更改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)

我在调试时尝试的其他操作:

  • 当我删除PRIMARY KEY时,它不起作用。
  • 当尝试其他数据类型时,它不起作用。

python sql postgresql psycopg2

1
推荐指数
1
解决办法
957
查看次数

使用 execute_batch 插入时 Psycopg2 类型错误

我正在尝试使用 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)

python postgresql psycopg2

1
推荐指数
1
解决办法
6331
查看次数

标签 统计

python ×3

postgresql ×2

psycopg2 ×2

boolean ×1

csv ×1

missing-data ×1

pandas ×1

sql ×1