间隔比较不适用于if语句-python

间隔比较不适用于if语句-python,python,if-statement,Python,If Statement,我正在编写一段代码,允许我根据索引值使用特定字符串或值填充数据帧,并将所有内容存储在dict中。 作为测试,如果索引小于或等于3或大于或等于7,我想用'foo'填充数据帧df 我原以为我写的贝娄的剧本会管用,但事实并非如此,恐怕我已经想不出为什么了 letter_list=['a','b','c'] mydict=dict() 对于字母列表中的字母: df=pd.DataFrame() df=df.reindex(范围(10)) 对于df.index.astype(float)中的i: 如果i=

我正在编写一段代码,允许我根据索引值使用特定字符串或值填充数据帧,并将所有内容存储在
dict
中。 作为测试,如果索引小于或等于3大于或等于7,我想用
'foo'
填充数据帧
df

我原以为我写的贝娄的剧本会管用,但事实并非如此,恐怕我已经想不出为什么了

letter_list=['a','b','c']
mydict=dict()
对于字母列表中的字母:
df=pd.DataFrame()
df=df.reindex(范围(10))
对于df.index.astype(float)中的i:
如果i=7:
df['toto']='foo'
其他:
df['toto']='booo'
mydict[字母]=dict()
mydict[字母]['toto']=df.toto
这个的输出给了我:

{'A1':{'toto':0 foo
一福
2富
三福
四福
五福
6福
7福
8富
9福
名称:toto,数据类型:object}
而不是:

{'a':{'toto':0 foo
一福
2富
三福
4 booo
5 booo
6 booo
7福
8富
9福
名称:toto,数据类型:object}

我想用
if 3替换
if I=7:
,正如前面所说,df['toto']分配给整个列。您将不得不迭代行。试试这个:

letter_list = ['a', 'b', 'c']

mydict = dict()

for letter in letter_list:
    df = pd.DataFrame()
    df = df.reindex(range(10))
    df['toto'] = ''

    for i in df.index:
        if i <= 3 or i >= 7:
            df['toto'][i] = 'foo'
        else:
            df['toto'][i] = 'booo'

    mydict[letter] = dict()
    mydict[letter]['toto']  = df.toto

为什么要让它漂浮?索引应该已经是整数类型,并且可以直接与3和7进行比较。您没有分配给
df['toto'][i]
。比较是好的;您只是重复执行相同的总括赋值。
df['toto']
assign到整个列。所以你给整个专栏分配了10次,最后一次分配(即
'foo'
)就结束了。我现在明白了我的代码出了什么问题(很明显,我很惭愧……),非常感谢你的帮助@chepner@00由于
df.index
不起作用,我实际上将float转换为测试。非常感谢你的投入,我成功了!
{'a': {'toto': 0     foo
  1     foo
  2     foo
  3     foo
  4    booo
  5    booo
  6    booo
  7     foo
  8     foo
  9     foo
  Name: toto, dtype: object}, 'b': {'toto': 0     foo
  1     foo
  2     foo
  3     foo
  4    booo
  5    booo
  6    booo
  7     foo
  8     foo
  9     foo
  Name: toto, dtype: object}, 'c': {'toto': 0     foo
  1     foo
  2     foo
  3     foo
  4    booo
  5    booo
  6    booo
  7     foo
  8     foo
  9     foo
  Name: toto, dtype: object}}