【问题标题】:How to simplify this loop (DataFrame in pandas)如何简化这个循环(熊猫中的DataFrame)
【发布时间】:2022-01-08 20:32:58
【问题描述】:

嘿,我有一个 DataFrame,其中 Values 列的值是列表,其中每个列表包含一个包含 3 个字符的字符串。对于来自values_listvalues,我想将Values 列中每个列表中的最后一个字符替换为“I”。这是我当前的代码:

for i in range(len(data["Values"])):
    for k in range(len(data.iloc[i]["Values"])):
        if data.iloc[i]["Values"][k] in values_list:
            data.iloc[i]["Values"][k] = data.iloc[i]["Values"][k][:2] + "I"

我怎样才能以更合适的方式重写它?

【问题讨论】:

  • 你能给你的数据标题吗

标签: python python-3.x pandas dataframe


【解决方案1】:

不太清楚您要做什么,但我认为这就是您的意思。

您可以定义函数,然后在该列上使用.map()

import pandas as pd

data = pd.DataFrame({'Values':[['aaa','bbb','ccc'],
                               ['ddd','eee','fff']]})


print(data)

values_list = ['aaa', 'ccc', 'eee']

def subI(value_list):
    value_list = [x[:-1] + 'I' if x in values_list else x for x in value_list]
    return value_list

data['Values'] = data['Values'].map(subI)

print(data)

输出:

print(data)
            Values
0  [aaa, bbb, ccc]
1  [ddd, eee, fff]
            Values
0  [aaI, bbb, ccI]
1  [ddd, eeI, fff]

【讨论】:

    猜你喜欢
    • 2022-08-21
    • 2013-10-03
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多