在下面的代码中,我尝试在'value'列中找到正值时简单地打印1。
但是,我得到一个错误“TypeError:'>=' not supported between instances of 'Timestamp' and 'int'”。
这是因为行对象中有一个索引列。
其中df.columns.get_loc(“value 1 ~~”)为df返回1,这是正确的,但不是正确的行对象的列索引。
那么,这样做的正确语法是什么呢?
import pandas as pd
from datetime import datetime
# Sample data
data = {
'datetime': [
datetime(2023, 11, 11, 8, 0, 0),
datetime(2023, 11, 11, 8, 5, 0),
datetime(2023, 11, 11, 8, 10, 0),
datetime(2023, 11, 11, 8, 15, 0),
datetime(2023, 11, 11, 8, 20, 0),
datetime(2023, 11, 11, 8, 25, 0),
datetime(2023, 11, 11, 8, 30, 0),
datetime(2023, 11, 11, 8, 35, 0),
datetime(2023, 11, 11, 8, 40, 0),
datetime(2023, 11, 11, 8, 45, 0),
datetime(2023, 11, 11, 8, 50, 0),
],
'value 1 ~~': [1, 3, 1, 0, -1, 1, 0, 2, -3, 0, -3],
}
# Create the DataFrame
df = pd.DataFrame(data)
for row in df.itertuples(index=True):
print(row.Index)
if row[df.columns.get_loc("value 1 ~~")] >= 0:
print(1)
字符串
注:我不想做
if row[df.columns.get_loc("value 1 ~~")+1] >= 0:
型
更新时间2023/12/15 15:20
row._ _ getattribute _ _(“value 1 ~~”)也不起作用。
1条答案
按热度按时间disho6za1#
您正在索引
row
,其中包括df
的索引作为列,列的位置在df
中,其中不包括索引作为列。因此:row
中的col索引0表示df
中的索引colrow
中的col索引1表示df
中的日期时间colrow
中的col索引2表示df
中的值~~1 col如果value ~~ 1总是你的最后一列,那么像这样的东西可能是一个快速的解决方案:
字符串
正如其他人建议的那样,最好将代码更改为
iterrows
,同时更改列名,因为解释器不喜欢value ~~1