使用间隔索引在DataFrame中设置特定值

时间:2018-10-30 16:55:39

标签: python pandas

让我有一个像这样的数据框:

test_df = pd.DataFrame(
        0, 
        index = pd.IntervalIndex.from_breaks([100, 200, 300, 400]),
        columns = ['A', 'B', 'C']
)

因此它将给我们:

            A   B   C
(100, 200]  0   0   0
(200, 300]  0   0   0
(300, 400]  0   0   0

现在,假设我想在给定的时间间隔内更改特定的值,在我的数据帧中的某些间隔中具有整数值。

通过这种方法,对于特定的给定整数值,我可以获得.loc的间隔值: test_df.loc[250]。这会给我系列。

但是!

第一种情况

test_df.at[250, 'B']
------
ValueError: At based indexing on an non-integer index can only have non-integer indexers

为什么在这种情况下我不能使用整数值250?它与.loc中的整数类型一起使用效果很好。


第二种情况

test_df.loc[250, 'B']
------
'pandas._libs.interval.IntervalTree' object has no attribute 'get_value'

没有属性get_value?那我该如何获得价值呢?我只能通过.loc属性来获得它吗?


第三种情况

test_df.at[250, 'B'] = 10
------
'pandas._libs.interval.IntervalTree' object has no attribute 'set_value'

主要问题
那么我应该如何在数据框中设置特定的值?

3 个答案:

答案 0 :(得分:2)

如果为

code programming () { cd /path/to/Programming clear pwd ls } 提供第二组标签的列表,则当前可以使用:

.loc

答案 1 :(得分:2)

请注意,loc的行为已经fixed,并将在即将发布的0.24.0版本中出现:

In [1]: import pandas as pd; pd.__version__
Out[1]: '0.24.0.dev0+870.g7191af9b4'

In [2]: test_df = pd.DataFrame(
   ...:         0,
   ...:         index = pd.IntervalIndex.from_breaks([100, 200, 300, 400]),
   ...:         columns = ['A', 'B', 'C']
   ...: )

In [3]: test_df
Out[3]:
            A  B  C
(100, 200]  0  0  0
(200, 300]  0  0  0
(300, 400]  0  0  0

In [4]: test_df.loc[250, 'B']
Out[4]: 0

In [5]: test_df.loc[250, 'B'] = 100

In [6]: test_df
Out[6]:
            A    B  C
(100, 200]  0    0  0
(200, 300]  0  100  0
(300, 400]  0    0  0

答案 2 :(得分:1)

    export default class Docs extends Component {
  render = () =>
    <div>
      <h1>Example:</h1>
      <div className={styles['code-block']}>
        {`
        import Calendar from './Calendar'

        const config = {
          api_key: 1234,
          calendars: [{ name: 'demo', url: 'example@group.calendar.google.com' }]
        }
        `}
      </div>
    </div>

}

但是请确保与列数据类型相同的类型