簡體   English   中英

如何簡化這個循環(熊貓中的DataFrame)

[英]How to simplify this loop (DataFrame in pandas)

嘿,我有一個 DataFrame,其中列Values的值是列表,其中每個列表包含一個包含 3 個字符的字符串。 對於values_list中的values ,我想將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"

我怎樣才能以更合適的方式重寫它?

不太清楚你想要做什么,但我認為這就是你的意思。

您可以定義 function 然后在該列上使用.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)

Output:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM