python - 根据两个值之间的索引填充 Pandas 数据框

标签 python pandas dataframe between

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

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 。

最佳答案

我认为您主要可以在索引值重复时使用mask

所以如果想使用between仅适用于 Series,可以使用 to_seriesSeries 构造函数。

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

关于python - 根据两个值之间的索引填充 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44754647/

相关文章:

python - 获取两个坐标之间的距离时出错

python - 使用 Python 抓取 HTTP 横幅

python - 如何清理此数据类型对象并将其转换为保持 Null 和 NaN 的 float 类型

python - 将数据框的每隔 2 列着色为 excel?

python - 如何从 pandas 中的在线 zip 链接读取 Excel 文件

python - 随机删除重复项

python Pandas TypeError : Cannot compare type 'Timestamp' with type 'float'

python - 使用 Tkinter 快速制作圆日志

python - 如果我在 python 中使用多处理但我的函数不返回任何内容,我是否需要调用 get()?

python - 埃拉托斯特尼筛法遗漏了一些复合 Material