我有一个非常大的数据框,我想避免遍历每一行,并希望将整个列从十六进制字符串转换为int.它不会使用astype正确处理字符串,但单个条目没有问题.有没有办法告诉astype数据类型是16?
IN:
import pandas as pd
df = pd.DataFrame(['1C8','0C3'], columns=['Command0'])
df['Command0'].astype(int)
OUT:
ValueError: invalid literal for int() with base10: '1C8'
Run Code Online (Sandbox Code Playgroud)
这有效,但希望避免行迭代.
for index, row in df.iterrows():
print(row['Command0'])
Run Code Online (Sandbox Code Playgroud)
我正在从CSV中读取这个内容,pd.read_csv(open_csv, nrows=20)所以如果有办法读取它并明确告诉它格式是什么,那就更好了!
如何让pandas附加一个整数并保留整数数据类型?在我输入数据之后我意识到我可以将df.test.astype(int)添加到整个列但是如果我可以在我追加数据的时候这样做,那么这似乎是更好的方法.这是一个示例:
from bitstring import BitArray
import pandas as pd
df = pd.DataFrame()
test = BitArray('0x01')
test = int(test.hex)
print(test)
df = df.append({'test':test, 'another':5}, ignore_index=True)
print(df.test)
print(df.another)
Run Code Online (Sandbox Code Playgroud)
这是输出:
1
0 1.0
Name: test, dtype: float64
0 5.0
Name: another, dtype: float64
Run Code Online (Sandbox Code Playgroud)
它将整数更改为浮点数.
我有一些写得不好的 xml,我正在尝试循环并提取每个测试的测试名称、开始和结束时间。我使用该数据将一列附加到 csv 中。我当前的实现检查 xml 中的每个元素,并且似乎很慢。
这是一个 xml 示例
<ProcessStart Id="1" Type="MemTest" Name="WriteRead" Options=" /pi=5 /m=AA" Tick="1233" />
<ProcessStart Id="2" Type="MemTest" Name="WriteRead" Options=" /pi=5 /m=AA" Tick="1233" />
<ProcessStart Id="3" Type="MemTest" Name="WriteRead" Options=" /pi=5 /m=AA" Tick="1233" />
<ProcessEnd Id="1" Tick="7553"/>
<ProcessEnd Id="2" Tick="7553"/>
<ProcessEnd Id="3" Tick="7553"/>
<ProcessStart Id="17" Type="MemTest" Name="WriteRead" Options=" /pi=25 /m=AA" Tick="8126" />
<ProcessStart Id="18" Type="MemTest" Name="WriteRead" Options=" /pi=25 /m=AA" Tick="8127" />
<ProcessStart Id="19" Type="MemTest" Name="WriteRead" Options=" /pi=25 /m=AA" Tick="8127" />
<ProcessEnd Id="17" Tick="12873"/>
<ProcessEnd Id="18" Tick="12873"/>
<ProcessEnd Id="19" …Run Code Online (Sandbox Code Playgroud) 我试图理解汇编语言的语法,首先正确地编写代码,然后高效地编写代码。在此示例中,它显示了使用的示例"=r"
asm volatile ("MRS %0, PMUSERENR_EL0\n": "=r"(value));
Run Code Online (Sandbox Code Playgroud)
这会读取寄存器的值并将其存储在值变量中。另一个例子使用::"r"
asm volatile ("MSR PMUSERENR_EL0, %0\n":: "r"(value));
Run Code Online (Sandbox Code Playgroud)
这会将值变量写入 PMUSERENR_ELO 寄存器。这是另一个例子:如何测量 ARM Cortex-A8 处理器中的程序执行时间?。
当我尝试使用上述两个命令编译一个简单的测试代码时,我收到错误::9:2: error: output operand constraint lacks '='如果我添加“=”并删除一个“:”,它将编译,但当我测试它时,它只是说Illegal instruction
如果有人可以解释其中的差异,这将很有帮助,许多组装教程显示相同的格式但没有解释。如果这提供了任何见解的话,它是在 64 位 ARM 平台上进行的。谢谢。
我正在使用64位无符号整数,并在比特移位后比较该值,然后解码其余的位值.我正在迭代数百万个值并尝试最小化处理时间.
问题是uint64和numpy-uint64都不支持位移.我试图避免使用int64来避免负值.
示例数据:移位后的0x8204000000000080(字>> 60):= - 8#,但与0x8相比
循环一百万次,看看它需要多长时间,发现在所有方法中,'>>'移位运算符是最有效的,具有调用abs()函数的下一个最佳选项.对此有更好的解决方案吗?
循环代码:
import numpy as np
import time
start_time= time.time()
for i in range(1000000):
x= np.int64(-1)
x=np.right_shift(x,60)
print (time.time()-start_time)
start_time= time.time()
for i in range(1000000):
x= np.uint64(-1)
x=int(x/(2**60))
print (time.time()-start_time)
start_time= time.time()
for i in range(1000000):
x= np.int64(-1)
x=abs(x>>60)
print (time.time()-start_time)
start_time= time.time()
for i in range(1000000):
x= np.int64(-1)
x= x>>60
print (time.time()-start_time)
Run Code Online (Sandbox Code Playgroud)
输出:
2.055999994277954
3.1540000438690186
0.619999885559082
0.5810000896453857
Run Code Online (Sandbox Code Playgroud) 我发现的所有答案都只是说使用字典或列表.我正在制作一个应用程序,并且GUI正在QT创建者中进行设计.有一系列复选框(21),在Qt Creator中都标有cb0 .... cb20.我有一个21元素列表,表示是否应该选中复选框.有没有办法循环变量名称?伪代码:
for i in range(21):
if cbList[i]:
cb'i'.setChecked=True
else:
cb'i'.setChecked=False
Run Code Online (Sandbox Code Playgroud)
如何cb'i'将i转换为变量名?
为清晰起见添加:我不想创建字典,然后将字典值设置为true或false.变量已经存在.它们是GUI中的复选框.所有复选框都是名称cb0 ... cb20.它们具有我希望为复选框的每个实例调用的函数setChecked.例如,cb0.setChecked(False)将禁用该复选框.我有一个与每个复选框对应的列表.我试图避免cb1.setChecked(True)为所有21个复选框写作.