【问题标题】:Pandas index iat熊猫指数iat
【发布时间】:2016-10-21 17:12:18
【问题描述】:

我使用 pandas 索引 iat 但我发现错误

TypeError: call() 接受 1 到 2 个位置参数,但给出了 3 个。

我的代码是:

df['xyz'] = df.index ,date_format = "%m/%d/%Y" ,x=len(df.index),start = df.iat(1,2) ,end = df.iat(x,2),df.drop('xyz'),print(start) ,
print(end) ,x = int(datetime.strftime(df.max(axis=0),date_format)-datetime.strftime(df.min(axis=0),date_format)) and print(df) gives this value 
               incoming  xyz
2015-09-03      1061 2015-09-03
2015-09-04      1193 2015-09-04
2015-09-05       618 2015-09-05
2015-09-07      1246 2015-09-07
2015-09-08      1054 2015-09-08
2015-09-09      1030 2015-09-09 etc

但我在start line = df.iat(1,2) 中发现了错误。

TypeError: call() 需要 1 到 2 个位置参数,但需要 3 个 给了

.

【问题讨论】:

  • 你能正确地格式化你的代码吗?对文本内代码使用反引号 (`),对代码块使用换行符与文本分隔的四个前面的空格。
  • 谢谢,我会尝试正确格式化
  • 为什么变量赋值之间有逗号?你的意思是换行吗?此外,python 中的 cmets 应该有一个前面的标签 (#)。
  • 原始代码中没有逗号,但是在stackoverflow格式中放逗号。

标签: python datetime pandas dataframe


【解决方案1】:

我认为你需要在iat 中添加[],而不是()

df.iat[1,2]

还将[1,2] 更改为[1,1],因为0 中只有2 列和python 计数。

您需要的 IIUC:

print (df)
            incoming
2015-09-03      1061
2015-09-04      1193
2015-09-05       618
2015-09-07      1246
2015-09-08      1054
2015-09-09      1030

df.index = pd.DatetimeIndex(df.index)
start = df.index[0]
end = df.index[-1]

print(start)
2015-09-03 00:00:00
print(end)
2015-09-09 00:00:00

x = end - start
print (x)
6 days 00:00:00
x = int(x / np.timedelta64(1, 'D'))
print (x)
6

【讨论】:

  • 我已经做了但是给出了 IndexError: index 2 is out of the bounds for axis 0 with size 2 in the same line
  • 嗯,column 2015-09-03, 2015-09-04 不是列,而是index。如果使用 print df.columns 它只返回 2 列名,因为在您的示例中只有 2 列..
  • 我要打印开始和结束列
  • 哪一栏? incoming?或xyz?还是索引的第一个元素和索引的最后一个元素?
  • start = df.iat(1,2),传入列。在这一行中为什么它给我错误。
猜你喜欢
  • 2018-03-07
  • 2015-05-28
  • 2022-06-10
  • 2020-09-16
  • 2021-08-26
  • 2020-06-03
  • 2019-01-21
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多