当前位置: 首页 > 知识库问答 >
问题:

如何提取Python数据帧特定列的特定位

江浩慨
2023-03-14

对于熊猫数据帧的特定列,该列实际上是转换成BCD的16位数据。我只想提取特定行的14-8位并转换为BCD。下面的公式适用于如下的小数据帧。

df=pd.DataFrame({'Value':[128,128,436,465], 'Minutes':[1280,16384,1792,1536] })

df['Minutes_1']=df.Minutes.apply(int).apply(bin).str[2:].str[:-8].apply(int, base=2)
df

但当我申请时

df['Minutes_1']=df.Minutes.apply(int).apply(bin).str[2:].str[:-8].apply(int, base=2)

对于688126行的较大数据帧,我得到一个错误,说

基数为2的int()的文本无效:“”

Note:  Few values of the row are 
0, 256,512,768,1024,1280,1536,1792,2048,2304,4096,4352,4608,4864,
5120,5276,5632,5888,6144,6400,8192,8448,8704,8960,9216,9472,9728,9984,10240,10496,12288,
12544,12800,13056,13312,13568,13824,14080,14336,14592,16384,16640,16896,17152,17408,17920,
18176,18432,18688,20480,20736,20992,21248,21504,21760,22016,22272,22528,22784

错误如下所示

ValueError Traceback(最近调用最后一次)在1 df.LO_TIME_0_J2_0----

C:\ProgramData\Anaconda3\lib\site packages\pandas\core\series.py in apply(self、func、convert\u dtype、args、**kwds)3192-else:3193-values=self.astype(object).values-

熊猫/_libs/src\inference.pyx_libs.lib.map_infer()

C:\Program Data\Anaconda3\lib\site-包\熊猫\core\series.py在(x)3179#处理ufuns和lambdas 3180如果kwds或args而不是is实例(func,np.ufunc):-

ValueError:基为2的int()的文本无效:“”

请帮忙

共有1个答案

裴欣然
2023-03-14

您有一个值0,所以当您将此值转换为bin时,0变为0b0,因此使用提取str[2:]. str[:-8]您没有值。

我建议您在提取与0之间应用zfill(16):

df['Minutes_1'] = df.Minutes.apply(int).apply(bin).str[2:].str.zfill(16).str[:-8].apply(int, base=2)

可能使用astype比apply(int)更快:

df['Minutes_1'] = df.Minutes.astype(int).apply(bin).str[2:].str.zfill(16).str[:-8].apply(int, base=2)

例子:

df = pd.DataFrame( {'Minutes': [1280, 16384, 1792, 1536, 0, 256]})                                    
df['Minutes_1'] = df.Minutes.apply(int).apply(bin).str[2:].str.zfill(16).str[:-8].apply(int, base=2)  

输出:

   Minutes  Minutes_1  
0     1280          5  
1    16384         64  
2     1792          7  
3     1536          6  
4        0          0  
5      256          1  

如果没有zfill,则会出现错误:

ValueError:以2为基数的int()的文本无效:“”

 类似资料:
  • 我不知道如何选择特定的JSON数据。 如何更改此代码以使我只有id,而没有其他响应数据? 我在网上阅读,显然我需要使用结构?我不确定如何处理这个问题。 这将返回...

  • 我有一个有4列的pandas DataFrame,我想创建一个只有其中3列的新DataFrame。这个问题类似于:从数据帧中提取特定列,但对pandas来说不是R。下面的代码不起作用,会引发错误,当然也不是pandasnic的方法。 熊猫式的方法是什么?

  • 我正在编写一个脚本,将带有标头的大. xlsx文件减少到CSV中,然后根据标头名称编写一个新的CSV文件,其中仅包含所需的列。 我得到的错误是最后一段代码,它说 我肯定我忽略了一些愚蠢的东西,但是我已经阅读了熊猫网站上的留档,我仍然不知所措。我知道我误用了to_csv参数,但我似乎无法理解留档。 任何帮助都是赞赏的,谢谢!

  • 问题内容: 我有一个包含6列的R数据框,并且我想创建一个仅包含三列的新数据框。 假设我的数据帧df,我想提列A,B和E,这是唯一的命令,我可以计算出: 有没有更紧凑的方法可以做到这一点? 问题答案: 如果您的data.frame被调用,则使用dplyr包df1: 也可以在不使用%>%管道的情况下将其写为:

  • 用其他dataframe的列值替换dataframe的一列中的nan值时出现问题。下面是一个测试示例: 我想用其他dataframe中的特定值替换列名中的Nan值(如果其中有一些Nan值,则不是其他列),例如此dataframe中的Name2值: 我想得到的是: 这是此示例的测试代码: 然后我尝试了这三种方法,但都不起作用——我的数据帧始终保持Nan值。 你能告诉我哪里出错了吗?

  • 在scala火花数据帧中是否有的替代方案。我想从火花数据帧的列中选择特定的行。例如,在R等效代码中的第100行