Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.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,好吧,我真正的问题比这更大,但我有一个简单的工作示例 >>> import pandas as pd >>> import numpy as np >>> a = pd.DataFrame(np.array([[2, 1990], [4,1991], [5,1992]]), \ ... index=[1,2,3], columns=['var', 'yr']) >>> a var

好吧,我真正的问题比这更大,但我有一个简单的工作示例

>>> import pandas as pd
>>> import numpy as np
>>> a = pd.DataFrame(np.array([[2, 1990], [4,1991], [5,1992]]), \
...                  index=[1,2,3], columns=['var', 'yr'])
>>> a
   var    yr
1    2  1990
2    4  1991
3    5  1992
>>> b = pd.DataFrame(index=a.index, columns=['new_var'])
>>> b
  new_var
1     NaN
2     NaN
3     NaN
>>> b[a.yr<1992].loc[:, 'new_var'] = a[a.yr<1992].loc[:, 'var']
>>> b
  new_var
1     NaN
2     NaN
3     NaN

使用这些过滤功能,您正在创建一个切片的副本,因此它不会分配

改为这样做:


b.loc[a.yr您还可以使用
assign
+
query
增加直观性

b.assign(new_var=a.query('yr < 1992')['var'])

   new_var
1      2.0
2      4.0
3      NaN
b.assign(new_var=a.query('yr<1992')['var']))
新变种
1      2.0
2      4.0
3南
这将返回所需的
dataframe
。如果要将其持久化,则必须将其分配回
b

另一个“创造性”解决方案:

In [181]: b['new_var'] = np.where(a.yr < 1992, a['var'], b['new_var'])

In [182]: b
Out[182]:
  new_var
1       2
2       4
3     NaN
[181]中的
:b['new_var']=np.where(a.yr<1992,a['var'],b['new_var'])
在[182]:b中
出[182]:
新变种
1       2
2       4
3南

这是一个很好的答案!但是,
a
上的切片是不必要的。这就足够了
b.loc[a.yrCool。是的,熊猫似乎非常擅长合理简洁。这对于
分配
+
查询
;-)@MaxU来说是一个非常不寻常的用例。我一直在尝试推陈出新。
In [181]: b['new_var'] = np.where(a.yr < 1992, a['var'], b['new_var'])

In [182]: b
Out[182]:
  new_var
1       2
2       4
3     NaN