尝试将 csv 文件读入我的数据类型时出现值错误。我需要确保它有效并且每一行都被读入并且是正确的。
错误例如:
Pandas: ValueError: Integer column has NA values in column 2
Run Code Online (Sandbox Code Playgroud)
我试图在 Pandas Python 库中转换为整数,但有一个值。
但是,我读入的 csv 文件似乎有一些错误的条目,因为它由手动输入的测试结果组成。
我读到使用这个命令:
test = pd.read_csv("test.csv", sep=";", names=pandasframe_names, dtype=pandasframe_datatypes, skiprows=1)
Run Code Online (Sandbox Code Playgroud)
名称为 A、B、C、D 和 E,并且定义正确。
如果有错误的条目,我需要一种处理此问题而不丢失整行的方法。
这是我的情况:我有一个 pandas 数据框,它读取 csv 表,该表有 5 列,标题为 A、B、C、D、E。我使用参数skiprows=1 跳过第一行
pandas_datatypes={'A': pd.np.int64, 'B':pd.np.int64, 'C':pd.np.float64, 'D':object, 'E':object}
Run Code Online (Sandbox Code Playgroud)
我的行有 5 列,前 2 列是 int64,第三列是 float64,接下来的 2 列是对象(例如字符串)
当我读入它时,这些相当于我的数据类型。含义dtype=pandas_datatypes
现在我有这样的条目:
entry 1: 5; 5; 2.2; pedagogy; teacher (correct)
entry 2: 8; 7.0; 2.2; pedagogy; teacher (incorrect, as second is …
Run Code Online (Sandbox Code Playgroud) 通过该re.DEBUG
标志可以了解 Python 中正则表达式模式的内部工作原理,例如:
import re
re.compile(r"(a(?:b)){1,3}(c)", re.DEBUG)
Run Code Online (Sandbox Code Playgroud)
返回:
MAX_REPEAT 1 3
SUBPATTERN 1 0 0
LITERAL 97
LITERAL 98
SUBPATTERN 2 0 0
LITERAL 99
0. INFO 4 0b0 3 7 (to 5)
5: REPEAT 11 1 3 (to 17)
9. MARK 0
11. LITERAL 0x61 ('a')
13. LITERAL 0x62 ('b')
15. MARK 1
17: MAX_UNTIL
18. MARK 2
20. LITERAL 0x63 ('c')
22. MARK 3
24. SUCCESS
Run Code Online (Sandbox Code Playgroud)
在哪里可以找到操作码(SUBPATTERN、MAX_REPEAT 等)的含义?其中一些是不言自明的,但整体目的尚不清楚。是什么1 0 0
意思SUBPATTERN 1 0 0 …
我想数字地解决包含白噪声的积分.数学上的白噪声可以用变量X(t)来描述,变量X(t)是随机变量,具有时间平均Avg [X(t)] = 0和相关函数Avg [X(t)X(t')] = delta_distrubtion(t) -t").
一个简单的例子是从t = 0到1计算X(t)上的积分.平均来说,这当然是零,但我需要的是这个积分的不同实现.
问题是这不适用于numpy.integrate.quad().
是否有任何python包处理随机积分?
我有一本字典,具有以下值:
{"a": 1, "b": 2, "c": 3}
Run Code Online (Sandbox Code Playgroud)
我想将密钥重命名b
为B
,而不会失去第二名。在Python 3.7及更高版本中,字典保留插入顺序,因此可以依赖键的顺序并且可能意味着一些东西。我正在寻找的最终结果是:
{"a": 1, "B": 2, "c": 3}
Run Code Online (Sandbox Code Playgroud)
显而易见的代码是运行:
>>> dictionary["B"] = dictionary.pop("b")
{'a': 1, 'c': 3, 'B': 2}
Run Code Online (Sandbox Code Playgroud)
但是,这不会按需要保留顺序。
假设整数的排序列表如下:
data = [1] * 3 + [4] * 5 + [5] * 2 + [9] * 3
# [1, 1, 1, 4, 4, 4, 4, 4, 5, 5, 9, 9, 9]
Run Code Online (Sandbox Code Playgroud)
我想找到值发生变化的索引,即
[3, 8, 10, 13]
Run Code Online (Sandbox Code Playgroud)
一种方法是使用itertools.groupby
:
cursor = 0
result = []
for key, group in groupby(data):
cursor += sum(1 for _ in group)
result.append(cursor)
print(result)
Run Code Online (Sandbox Code Playgroud)
输出
[3, 8, 10, 13]
Run Code Online (Sandbox Code Playgroud)
这种方法的复杂度是 O(n)。另一种可能的方法是使用bisect.bisect_left
:
cursor = 0
result = []
while cursor < len(data):
cursor …
Run Code Online (Sandbox Code Playgroud) 我想按“ pos”键对字典列表进行排序。但是,如果字典中缺少“ pos”,则我想保留项目的顺序,并假定“ pos”是列表中该项目从1开始的索引。
只要所有列表项都不同,就可以正常工作:
L = [
{ "id": "1" }, # assume pos: 1
{ "id": "2" }, # assume pos: 2
{ "id": "3" }, # assume pos: 3
{ "id": "4" }, # assume pos: 4
{ "id": "ZZZ" }, # assume pos: 5
{ "id": "AAA" }, # assume pos: 6
{ "id": "ABC", "pos": 3.2 },
{ "id": "XYZ", "pos": 3.1 },
]
s = sorted(L,key=lambda i:i.get("pos",L.index(i)+1))
print(s)
Run Code Online (Sandbox Code Playgroud)
输出:
[{'id': '1'}, {'id': '2'}, {'id': …
Run Code Online (Sandbox Code Playgroud) 我尝试验证 UUID v4。我尝试使用 sscanf 执行此操作,如果可以使用 sscanf 完全读取 UUID(= 读取的字符总数 - 36),我认为这是一个正确的 UUID。到目前为止我的代码:
#include <stdio.h>
int main()
{
char uuid[ 37 ] = "da4dd6a0-5d4c-4dc6-a5e3-559a89aff639";
int a = 0, b = 0, c = 0, d = 0, e = 0, g = 0;
long long int f = 0;
printf( "uuid >%s<, variables read: %d \n", uuid, sscanf( uuid, "%8x-%4x-4%3x-%1x%3x-%12llx%n", &a, &b, &c, &d, &e, &f, &g ) );
printf( " a - %x, b - %x, c - %x, d …
Run Code Online (Sandbox Code Playgroud) 我一直在使用Python的NTLK进行通用语言解析,最近我想创建一个专门用于翻译的语料库.我一直无法理解NTLK用于翻译的语料库选项和结构.
关于如何阅读或使用语料库资源有很多材料,但我无法在创建翻译风格语料库时找到任何详细信息.我从浏览语料库引用了解到有各种各样的样式和类型,但我似乎无法找到任何翻译特定的语料库示例或文档.
我有一个数据框,我想与一些关键字匹配(我想检测包含这些关键字的行)我设法通过这种方式获得了这份工作。但我想知道我可能有多达 10 或 20 个不同的关键字,是否有更好的方法来做到这一点。
df1 = df[df['column1'].str.contains("keyword1") | df['column1'].str.contains('keyword2')]
Run Code Online (Sandbox Code Playgroud)
(我是初学者,请尽量保持简单)
我有如下所示的熊猫数据框:
account have
A 0
A 1
A 2
A 1
A 1
A 2
A 0
A 1
A 1
B 0
B 0
B 0
B 0
B 0
B 1
B 1
B 1
B 1
Run Code Online (Sandbox Code Playgroud)
我想要这样的结果:
account have
A 12
A 12
A 0
A 1
A 2
A 0
A 1
A 2
A 3
B 12
B 12
B 12
B 12
B 12
B 12
B 12
B 12
B 12
Run Code Online (Sandbox Code Playgroud)
我想在找到并更改的特定值之后进行排序,account …