python - 如何从列表中的每个项目中获取第一个字符并对其进行操作

标签 python pandas list-comprehension

我的代码如下:

manipulate_list = data['Incorrect Frequency Cap1'].astype(str).tolist()
manipulate_list = ['Blank' if x == '' else x for x in manipulate_list]

first_numerical = []
for i in manipulate_list:
    first_numerical.append(i[0])

completed_frequency = []
for i in first_numerical:
    if i == 'N':
        completed_frequency.append(i+ 'o Cap Per Day')
    if i == 'B':
        completed_frequency.append(i+'lank')
    else:
        completed_frequency.append(i+' x Per Day') 

当我使用以下内容检查“first_numerical”时 - first_numerical[5] - 我得到“5”。

为什么当我检查“completed_Frequency”时会得到以下信息?

completed_Frequency[5] = 'N x 每天'

最佳答案

IIUC,您的列表有点被覆盖,因为您错过了 elif 执行此操作

  for i in first_numerical:
        if i == 'N':
            completed_frequency.append(i+ 'o Cap Per Day')
        elif i == 'B':
            completed_frequency.append(i+'lank')
        else:
            completed_frequency.append(i+' x Per Day')

让我们举个例子来澄清一下误会

n=['1','1','1']
b=[]
for i in n:
    if i == '1':
        b.append(i)
    if i=='2':
        b.append(2)
    else:
        b.append('none')

输出

['1', 'none', '1', 'none', '1', 'none']

正确方法

n=['1','1','1']
b=[]
for i in n:
    if i == '1':
        b.append(i)
    elif i=='2':
        b.append(2)
    else:
        b.append('none')

输出

['1', '1', '1']

不被覆盖,但会附加额外的值

关于python - 如何从列表中的每个项目中获取第一个字符并对其进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60021446/

相关文章:

python - 在 python 中遇到数字时分割字符串

python - 在 PYTHON 中读取行、处理列表以及写入文件

python - 基于其他列对数据框中的文本和计数进行标记

python - 您可以在python的列表理解中使用ifinstance吗?

python - 具有多个控制流的列表理解 Python

python - 属性错误_rsaobj对象没有 'export key'属性

python - 在什么情况下双向冒泡排序优于标准冒泡排序?

python - 更改 pandas 数据框中预选元素的列

python - 无法在 Jupyter Notebook 中导入或安装 pandas-profiling

python - 列表的列表的元素到列表