我想把字符串“APPLES\u10\u4”放在一个数据帧中,并将其变成“APPLES”。我提出的代码如下:
import pandas as pd
data = ['APPLES_10_4']
Name_Parameters = []
df = pd.DataFrame(data, columns = ['fruit'], index = ['count'])
def badletters(lastletter):
badletters = ["1","2","3","4","5","6","7","8","9","_"]
if lastletter in badletters:
return True
else:
return False
def stripe(variable):
tempStrippedVariable = variable
foundEndVariable = False
while not foundEndVariable:
lastletter = tempStrippedVariable [:-1]
if badletters(lastletter):
tempStrippedVariable = tempStrippedVariable [:-1]
else:
foundEndVariable = True
strippedVariable = tempStrippedVariable
return strippedVariable
for variable in df:
strippedVariable = stripe(str(variable))
prefixes = []
if strippedVariable not in prefixes:
prefixes.append(strippedVariable)
print(df)
我得到的输出是带有['APPLES\u 10\u 4']的原始数据帧,而不是经过修改的数据帧,上面写着['APPLES']。如果这是一个愚蠢的问题,我们将不胜感激
一些数据帧元素是整数,而不是字符串。您可以在调用
stripe()
之前将它们转换为字符串或者你可以跳过它们
另一个bug在
stripe()
中:应该是
您正在将
lastletter
设置为除最后一个字母之外的整个字符串但整个功能可以简单地替换为:
最后,
for variable in df
不遍历数据帧内容,只遍历列名。见How to iterate over rows in a DataFrame in Pandas相关问题 更多 >
编程相关推荐