Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 选择某个数据帧的列值,该列值在某个范围内,并将其放入另一个数据帧的相应列中_Python_Python 3.x_Pandas - Fatal编程技术网

Python 选择某个数据帧的列值,该列值在某个范围内,并将其放入另一个数据帧的相应列中

Python 选择某个数据帧的列值,该列值在某个范围内,并将其放入另一个数据帧的相应列中,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个csv文件,如下所示 date,mean,min,max,std 2018-03-15,3.9999999999999964,inf,0.0,100.0 2018-03-16,0.46403712296984756,90.0,0.0,inf 2018-03-17,2.32452732452731,,0.0,143.2191767899579 2018-03-18,2.8571428571428523,inf,0.0,100.0 2018-03-20,0.6928406466512793,

我有一个csv文件,如下所示

date,mean,min,max,std
2018-03-15,3.9999999999999964,inf,0.0,100.0
2018-03-16,0.46403712296984756,90.0,0.0,inf
2018-03-17,2.32452732452731,,0.0,143.2191767899579
2018-03-18,2.8571428571428523,inf,0.0,100.0
2018-03-20,0.6928406466512793,100.0,0.0,inf
2018-03-22,2.8675703858185635,,0.0,119.05383697172658
我想选择那些列值,即
>20
<500
,即
(20到500)
,并将这些值与日期一起放在数据框的另一列中。另一个数据框如下所示

Date        percentage_change  location
2018-02-14  23.44              BOM
所以我想从csv中获取日期和值,并将其添加到新的数据框中的适当列中

Date        percentage_change   location
2018-02-14  23.44               BOM
2018-03-15  100.0               NaN
2018-03-16  90.0                NaN
2018-03-17  143.2191767899579   NaN
....        ....                ....

现在我知道了像
df.max(axis=1)
df.min(axis=1)
这样的函数,它们给出了最小值和最大值,但不确定是否可以根据范围查找值。那么如何实现这一点呢?

给定的数据帧
df1
df2
,您可以通过对齐列名、清理数字数据、,然后使用
pd.DataFrame.append

df_app = df1.loc[:, ['date', 'mean', 'min', 'std']]\
            .rename(columns={'date': 'Date'})\
            .replace(np.inf, 0)\
            .fillna(0)

print(df_app)

df_app['percentage_change'] = np.maximum(df_app['min'], df_app['std'])

print(df_app)
df_app = df_app[df_app['percentage_change'].between(20, 500)]

res = df2.append(df_app.loc[:, ['Date', 'percentage_change']])

print(res)

#          Date location  percentage_change
# 0  2018-02-14      BOM          23.440000
# 0  2018-03-15      NaN         100.000000
# 1  2018-03-16      NaN          90.000000
# 2  2018-03-17      NaN         143.219177
# 3  2018-03-18      NaN         100.000000
# 4  2018-03-20      NaN         100.000000
# 5  2018-03-22      NaN         119.053837