[英]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.