首页 > 解决方案 > 在列表的数据框中保留单个元素

问题描述

给定以下数据框:

  Movement Distance     Speed   Delay    Loss
0   [1, 1]   [1, 1]  [25, 25]  [0, 0]  [0, 0]
1   [1, 1]   [1, 1]  [25, 25]  [0, 0]  [0, 0]
2   [1, 1]   [1, 1]  [25, 25]  [0, 0]  [0, 0]
3   [1, 1]   [1, 1]  [25, 25]  [0, 0]  [0, 0]
4   [1, 1]   [1, 1]  [25, 25]  [0, 0]  [0, 0]

如何删除每列中除第一个元素之外的所有元素,然后取消列出,以便数据框变成这样:

  Movement Distance     Speed   Delay    Loss
0   1      1            25      0        0
1   1      1            25      0        0
2   1      1            25      0        0
3   1      1            25      0        0
4   1      1            25      0        0

标签: pythonpandasdataframe

解决方案


您可以apply使用str.slice或索引等效为:

df.apply(lambda x: pd.to_numeric(x.str[0], downcast='integer', errors='ignore'))

或者如果数据已经很干净,我们convert_dtypes在 pandas 1.0 中有新的(感谢 cs95):

df.apply(lambda x: x.str[0]).convert_dtypes()

   Movement  Distance  Speed  Delay  Loss
0         1         1     25      0     0
1         1         1     25      0     0
2         1         1     25      0     0
3         1         1     25      0     0
4         1         1     25      0     0

推荐阅读