提问人:shan 提问时间:3/31/2019 最后编辑:snakecharmerbshan 更新时间:8/24/2023 访问量:46469
RangeIndex 对象不可调用
RangeIndex object is not callable
问:
我正在从文本文件中读取值,并尝试查找子字符串的索引,如下所示
df=pd.read_csv('break_sent.txt', index_col=False,encoding='utf-8',delimiter="\n",names=['sent'])
#print(df[:50])
#df.index = list(df.index)
df1= df[40:50]
print(len(df))
print(df1.index)
print("-------------------------------------------")
for i,row in df1.iterrows():
string = row['sent']
#print("string",string)
d = df1[df1.sent.str.match(string)] # if the result includes more than 1 value then we know that substring and its matching parent string are present, then I will eliminate the substring from the dataframe
if len(d.index > 2):
index_val = df.index(string)
df.drop(df.index(string),inpace=True)
df.reset_index(level=None, drop=True, inplace=True)
当我运行此代码时,我收到以下错误
Traceback (most recent call last):
File "process.py", line 15, in <module>
index_val = df.index(string)
TypeError: 'RangeIndex' object is not callable
我试图将范围索引转换为列表
df.index = list(df.index)
但后来我得到了 Int64Index 不可调用。如何获取字符串的索引?
答:
0赞
katsu1110
7/24/2019
#1
尝试更改
df.drop(df.index(string),inpace=True)
自
df.drop(index=string, inplace=True)
0赞
squaregoldfish
9/25/2019
#2
您需要在数据帧上运行,而不是在搜索字符串上运行。所以:df.index
matched_rows = df.index[df1.sent.str.match(string)]
将为您提供与您的字符串匹配的行。然后,您应该能够将该输出传递给:df.drop
if len(matched_rows) > 2:
df.drop(matched_rows, inplace=True)
df.reset_index(level=None, drop=True, inplace=True)
我可能还没有掌握你要做的事情的确切细节,但希望这能为你指明正确的方向。
上一个:使用标准库对切片进行切片
评论