Python 提取列中列表的元素

Python 提取列中列表的元素,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个DataFrame,每个列上都包含一个列表,如下面的示例所示,只有两列 Gamma Beta 0 [1.4652917656926299, 0.9326935235505321, float] [91, 48.611034768515864, int] 1 [2.6008354611105995, 0.7608529935313189, float] [59, 42.38646954167245, int] 2 [2.6386970166722348, 0.978

我有一个DataFrame,每个列上都包含一个列表,如下面的示例所示,只有两列

    Gamma   Beta
0   [1.4652917656926299, 0.9326935235505321, float] [91, 48.611034768515864, int]
1   [2.6008354611105995, 0.7608529935313189, float] [59, 42.38646954167245, int]
2   [2.6386970166722348, 0.9785848171888037, float] [89, 37.9011122659478, int]
3   [3.49336632573625, 1.0411524946972244, float]   [115, 36.211134224288344, int]
4   [2.193991200007534, 0.7955134305428825, float]  [128, 50.03563864975485, int]
5   [3.4574527664490997, 0.9399880977511021, float] [120, 41.841146628802875, int]
6   [3.1190582380554863, 1.0839109431114795, float] [148, 55.990072419824514, int]
7   [2.7757359940789916, 0.8889801332053203, float] [142, 51.08885697101243, int]
8   [3.23820908493237, 1.0587479742892683, float]   [183, 43.831293356668425, int]
9   [2.2509032790941985, 0.8896196407231622, float] [66, 35.9377662201882, int]
我想为每一列提取每一行上列表的第一个位置,以获得如下所示的数据帧

    Gamma   Beta
0   1.4652917656926299  91
1   2.6008354611105995  59
2   2.6386970166722348  89
...
到目前为止,我的解决方案类似于df_params.itertuples()中的行的
[row[1][0]
,我可以对该行的每个列索引进行迭代,然后组成新的数据帧

另一种方法是
new_df=df_params['Gamma']。应用(lambda x:x[0])
,然后迭代遍历所有列


我的问题是,是否有一种更简便的方法来执行此操作?

您可以使用
str
访问器访问列表,例如:

df_params['Gamma'].str[0]
这适用于所有列:

df_params.apply(lambda col: col.str[0])

这将是相当缓慢的。您可以通过以下方法加快速度:

for column_name in df_params.columns:
    df_params[column_name] = [i[0] for i in df_params[column_name]]

str[0]拍摄得很好;)哦,哇,那太好了。再见。肯定会得到我的选票。:D,:D,:D很好,我离得不远:)。谢谢,工作很有魅力
str
是将值视为字符串的访问器,对吗?是什么使这项工作起作用?类似的问题(还有一种解决方法):