如何相对于单独数据框中的另一列剪切和排序熊猫列?

时间:2019-12-17 12:15:31

标签: python pandas dataframe valueerror

我有两个数据框,两个数据框都有一个名为“ float_values”的列,以及彼此不共享的其他列。我希望通过剪切可以看到并配对第二个数据帧的值的顶部和底部来对第一个数据帧进行排序。例如:

df1的取值范围从2000开始,且迭代值为1。df2的取值范围从1000至5000,但是没有真正可靠的迭代方法,只是随机跳变。我想剪切df2的最小值和最大值的df1。因此,如果df2的最小值为2015,则应在该位置剪切df1。同样是价值最高的东西。

我尝试过

max_value = dataframe2['float_values'].max()
min_value = dataframe2['float_values'].min()
mask = (dataframe1['float_values'] <= max_value and \ 
           dataframe1['float_values'] >= min_value)
dataframe1 = dataframe1[mask]

但是我收到一个奇怪的错误,说“ ValueError:系列的真值不明确。请使用a.empty,a.bool(),a.item(),a.any()或a.all() 。”

此外,我想做的是分析df2的不稳定数字,并查看df1中对应的值之间有多少个值,并创建df1块。我希望这是有道理的。我已经尝试过类似

```new_list = []
for i in range(len(range_list)):
new_list.append(i)
divide_chunks(process_data, range_list[i])
x = list(divide_chunks(process_data, range_list[1]))```

但是我不认为这会导致我想要的东西

1 个答案:

答案 0 :(得分:0)

下面的简单数据示例可能会做到这一点:

import pandas as pd

数据示例:

dataframe1 = pd.DataFrame({'float_values':[500,2000,2002,2010,6000]})
dataframe2 = pd.DataFrame({'float_values':[1000,5000]})

建立一个面具:

max_value = dataframe2['float_values'].max()
min_value = dataframe2['float_values'].min()
mask = (dataframe1['float_values'] <= max_value) & (dataframe1['float_values'] >= min_value)

检查结果:

new_dataframe1 = dataframe1[mask]
new_dataframe1