pandas - 基于可变长度的 Pandas 数据帧列中的索引列表

标签 pandas numpy python-3.7

我在 Pandas 数据框中有一列由可变长度列表组成,我正在尝试找到一种有效的方法来提取以列表长度为条件的元素。考虑这个最小的可重现示例:

t = pd.DataFrame({'a':[['1234','abc','444'],
                       ['5678'],
                       ['2468','def']]})

假设我想将第二个元素(如果相关)提取到新列中,否则使用 NaN。我能够以一种非常低效的方式获得它:

_ = []
for index,row in t.iterrows():
    if (len(row['a']) > 1): 
        _.append(row['a'][1])
    else:
        _.append(np.nan)
t['element_two'] = _

我尝试使用np.where(),但我没有正确指定“if”参数:

np.where(t['a'].str.len() > 1, lambda x: x['a'][1], np.nan)

对其他解决方案的更正和提示将不胜感激!我来自 R,我认为矢量化是理所当然的。

我使用的是 pandas 0.25.3 和 numpy 1.18.1。

最佳答案

使用str 访问器:

n = 2
t['second'] = t['a'].str[n-1]
print(t)
                  a second
0  [1234, abc, 444]    abc
1            [5678]    NaN
2       [2468, def]    def

关于pandas - 基于可变长度的 Pandas 数据帧列中的索引列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60325190/

相关文章:

python - 替换数据类对象中的属性

python - 使用 Bokeh 中 x 坐标的数据帧索引绘制 Pandas 数据帧

python - Pandas 数据帧 : Multiple Time/Date columns to single Date index

python - 仅获取满足 numpy 数组中条件的值

python - 如何将 Pandas 查找表应用于 numpy 数组?

python - 两个不同大小的数组的乘积求和

macos - 在 Mac 上安装 Python3.6 和 Python3.7

Python 在输入文件的开头添加一个空格?

python - Pandas :所有可能的行组合

python - 从 Pandas DataFrame 中清除 CSS 样式 block