python - 如何在 Pandas 数据框中拆分一列元组?

标签 python numpy pandas dataframe tuples

我有一个 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)。这也有效(因为它为每个元组创建一个系列,然后将其视为数据帧的一行),但它比 tolist 版本更慢/使用更多内存,如这里有其他答案(感谢 to denfromufa)。

关于python - 如何在 Pandas 数据框中拆分一列元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29550414/

相关文章:

python - 使用 python 将大量数据插入 MySQL 表的有效方法是什么?

python - 使用极投影将颜色条添加到 pcolormesh

python - Pandas - 计算群体规模的百分比

python - Pandas DataFrame Groupby 获取唯一行条件并识别增加值直至组数

python - 在事务中插入两个条目并得到 'Cannot operate on different entity groups in a transaction' 错误

python - 从工具导入任务,ImportError : cannot import name tasks

python - 如何使用 Numpy reshape ?

python - 识别 df 行之间的公共(public)元素以创建新列

python - Pandas v0.13.0 : Setting DataFrame values of type datetime64[ns]

python - pandas 合并以从数据框中取出两列并对列进行操作