当前位置: 首页 > 面试题库 >

如何在pandas数据框中拆分元组列?

单品
2023-03-14
问题内容

我有一个pandas数据框(这只是一小块)

>>> d1
   y norm test  y norm train  len(y_train)  len(y_test)  \
0    64.904368    116.151232          1645          549   
1    70.852681    112.639876          1645          549

                                    SVR RBF  \
0   (35.652207342877873, 22.95533537448393)   
1  (39.563683797747622, 27.382483096332511)

                                        LCV  \
0  (19.365430594452338, 13.880062435173587)   
1  (19.099614489458364, 14.018867136617146)

                                   RIDGE CV  \
0  (4.2907610988480362, 12.416745648065584)   
1    (4.18864306788194, 12.980833914392477)

                                         RF  \
0   (9.9484841581029428, 16.46902345373697)   
1  (10.139848213735391, 16.282141345406522)

                                           GB  \
0  (0.012816232716538605, 15.950164822266007)   
1  (0.012814519804493328, 15.305745202851712)

                                             ET DATA  
0  (0.00034337162272515505, 16.284800366214057)  j2m  
1  (0.00024811554516431878, 15.556506191784194)  j2m  
>>>

我想拆分所有包含元组的列。比如我想替换列LCV与列LCV-aLCV-b

我怎样才能做到这一点?


问题答案:

您可以通过pd.DataFrame(col.tolist())在该列上执行此操作:

In [2]: df = pd.DataFrame({'a':[1,2], 'b':[(1,2), (3,4)]})

In [3]: df                                                                                                                                                                      
Out[3]: 
   a       b
0  1  (1, 2)
1  2  (3, 4)

In [4]: df['b'].tolist()                                                                                                                                                        
Out[4]: [(1, 2), (3, 4)]

In [5]: pd.DataFrame(df['b'].tolist(), index=df.index)                                                                                                                                          
Out[5]: 
   0  1
0  1  2
1  3  4

In [6]: df[['b1', 'b2']] = pd.DataFrame(df['b'].tolist(), index=df.index)

In [7]: df                                                                                                                                                                      
Out[7]: 
   a       b  b1  b2
0  1  (1, 2)   1   2
1  2  (3, 4)   3   4

注意:在早期版本中,建议使用此答案df['b'].apply(pd.Series)代替pd.DataFrame(df['b'].tolist(), index=df.index)。这也很好(因为它使每个元组组成一个Series,然后将其视为一个数据帧的一行),但是比tolist版本更慢/使用了更多的内存,如此处其他答案所述(感谢@denfromufa)

我更新了此答案,以确保最可见的答案具有最佳的解决方案。



 类似资料:
  • 问题内容: 给定一个记录某些书籍使用情况的数据框,如下所示: 我需要获取所有书籍的数量,保留其他列并获取以下内容: 如何才能做到这一点? 谢谢! 问题答案: 您需要以下内容: 在您的情况下,“名称”,“类型”和“ ID”列的值匹配,因此我们可以对它们进行调用,然后单击。 另一种方法是使用添加“ Count”列,然后调用:

  • 问题内容: 现在有很多类似的问题,但是大多数回答了如何删除重复的列。但是,我想知道如何制作一个元组列表,其中每个元组都包含重复列的列名。我假设每一列都有一个唯一的名称。为了进一步说明我的问题: 然后我想要输出: 如果今天您感觉很好,则将相同的问题扩展到行。如何获取元组列表,其中每个元组都包含重复的行。 问题答案: 这是NumPy的一种方法- 样品运行- 进行转换即可,但是对于rows(index)

  • 问题内容: 我有一个带有多个列以及一个日期列的数据框。日期格式为15年12月31日,我将其设置为日期时间对象。 我将datetime列设置为索引,并希望对数据框的每个月执行回归计算。 我相信实现此目的的方法是将数据框基于月份拆分为多个数据框,存储到数据框列表中,然后对列表中的每个数据框执行回归。 我使用过groupby可以按月成功拆分数据框,但是不确定如何正确地将groupby对象中的每个组转换为

  • 问题内容: 这应该很容易,但是以某种方式我找不到有效的解决方案。 我有一个熊猫数据框,看起来像这样: 我想按col1和col2分组并获得col3和col4。 由于无法汇总数据,因此可以删除。 这是输出的样子。我很感兴趣,同时具有和中产生的数据帧。是否和是否属于索引并不重要。 这是我尝试过的: 但是,这只会返回的汇总结果。 我在这里迷路了。我发现的每个示例仅汇总一列,显然不会发生此问题。 问题答案:

  • 问题内容: 我有以下内容,行索引在哪里。如何将列中的字符串分成5列数字? 问题答案: 对于另一种情况,假设它是看起来像元组的字符串: (注意:对于较早版本的熊猫(<0.16.1),您需要使用而不是expand关键字) 顺便说一句,如果它是元组而不是字符串,则可以简单地执行以下操作:

  • 问题内容: 我有以下熊猫数据框: 产生此结果: 我如何传播,以便最终得到这个: 问题答案: 使用或: 但是,如果重复,需要或集合体,或可以改变,…: ValueError:索引包含重复的条目,无法重塑 编辑: 对于设置为和的清洁:

  • 我从基于apache-camel-spark的rest接口获得一个json数组作为输入。开始时,我想通过apache camels路线分割json-array来处理每个元素。我该怎么做? 我的测试输入json: 对于这个问题,我在stackoverflow上找到了一些间接描述的问题: link 1, link 2, link 3。 根据这些示例,我尝试了以下骆驼路线: 当我这样做时,我总是得到以下

  • 问题内容: 我有一个具有此类数据的数据框(列过多): 列看起来像这样: 我想像这样将列中的所有值转换为整数: 我通过以下方法解决了这一问题: 现在,我的数据框中有两列-旧列和新列,需要删除旧列。 那是不好的做法。它是可行的,但是在我的数据框中有很多列,我不想手动进行。 pythonic如何巧妙地实现呢? 问题答案: 首先,要将“分类”列转换为其数字代码,可以使用以下命令更轻松地做到这一点。 此外,