使用熊猫时,数据帧的长度出现问题

时间:2020-08-10 04:23:18

标签: pandas dataframe for-loop if-statement

a=0
for i in range (0,len(df)):
    if df['column name'][i][7]!='1' or df['column name'][i][7]='6':
        a=a+1   

如果我运行这段代码,则会出现错误“字符串索引超出范围”。有人可以帮我解决这个问题。 附言df大约有1000万行

3 个答案:

答案 0 :(得分:0)

如果索引大于或等于字符串的长度,则会发生此错误。

您可以检查字符串是否等于或大于7个字符。

a=0
for i in range (0,len(df)):
    data = df['column name'][i]
    if len(data) > 6 and (data[7] != '1' or data[7] == '6'):
        a=a+1

您可以通过列表理解来实现

can_count = lambda row: len(row['col']) > 6 and (row['col'][7] != '1' or row['col'][7] == '6')
a = sum((1 for _, row in df.iterrows() if can_count(row)))

要注意的一件事是df['column name'][i][7]='6'应该是==而不是=

答案 1 :(得分:0)

我看到您在代码中使用赋值运算符'='而不是'=='。我已复制粘贴该行以表明这一点。您能否重试并指出最终得到的错误消息。另外,请进一步说明您希望通过该操作实现的目标。

CC_AVX2_SUPPORT

答案 2 :(得分:0)

可以为您的字符串添加一个示例吗?您的数据可能太短了。

如果使用以下命令:df ['column name'] [i] [7],则您的字符串长度至少应为8个字符。

祝你好运

相关问题