间隔比较不适用于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}}