微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 根据两个值之间的索引填充pandas数据帧

我正在尝试生成一个用于广播到数据帧的掩码:一个布尔序列,指示给定行是否在两个值之间.这对于单个逻辑语句很容易做到,比如数据帧中的最后五个元素:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10,1))
mask = (df.index.values>4)
df.loc[mask,'column'] = range(0,5)

但是,如何用更多的交叉语句做同样的事情呢?例如,我可以寻址第2到第6行,而不是数组中的最后五个组件吗?尝试对掩码使用AND语句失败,我不能在数据帧索引值上使用Between.

解决方法:

我认为你可以使用掩码主要是重复的索引值.

因此如果要使用between只与Series一起工作,可以使用to_series或Series构造函数.

mask = df.index.to_series().between(2,6)
#mask = pd.Series(df.index, index=df.index).between(2,6)
print (mask)
0    False
1    False
2     True
3     True
4     True
5     True
6     True
7    False
8    False
9    False
dtype: bool

mask = df.index.to_series().between(2,6).values
print (mask)
[False False  True  True  True  True  True False False False]

或者带有&的连锁条件:

mask = (df.index >= 2) & (df.index <= 6)
print (mask)
[False False  True  True  True  True  True False False False]

但也许更好的是使用loc,如果独特的单调指数:

df.loc[2:6, 0] = range(5)
print (df)
          0
0  0.642933
1  0.912846
2  0.000000
3  1.000000
4  2.000000
5  3.000000
6  4.000000
7  0.504830
8  0.000422
9  0.029358

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐