我一直在努力解决这个问题,尽管我想采取一些解决方法,但我还是想知道是否有一种优雅的方法来实现此结果:
import pandas as pd
import numpy as np
data = np.array([
[1,10],
[2,12],
[4,13],
[5,14],
[8,15]])
df1 = pd.DataFrame(data=data, index=range(0,5), columns=['x','a'])
data = np.array([
[2,100,101],
[3,120,122],
[4,130,132],
[7,140,142],
[9,150,151],
[12,160,152]])
df2 = pd.DataFrame(data=data, index=range(0,6), columns=['x','b','c'])
现在,我希望有一个将这2个连接起来并用先前的值填充缺失值的数据框 否则为第一个值。这两个数据帧的网络大小都可以不同,我们感兴趣的是唯一列x。
那将是我想要的输出帧df_result。 x是2帧之间的聚合唯一“ x”
x a b c
0 1 10 100 101
1 2 12 100 101
2 3 12 120 122
3 4 13 130 132
4 5 14 130 132
5 7 14 140 142
6 8 15 140 142
7 9 15 150 151
8 12 15 160 152
任何帮助或提示将不胜感激,非常感谢
答案 0 :(得分:1)
您可以简单地在2个数据帧上使用合并操作,然后可以对空值填充应用排序,正向填充和向后填充。
<pre>
<location /svn>
DAV svn
SVNParentPath /u01/ciroot/subversion
AuthType Basic
AuthBasicProvider ldap
AuthName "Root Repo"
AuthLDAPURL "ldap://ldap.server.com:389/DC=macgroup,DC=local?sAMAccountName?sub?(&(ObjectClass=*)(memberOf=CN=OBIEE_DEV,OU=OBIEE,OU=Security,OU=Groups,OU=Global Resources,DC=MACGROUP,DC=LOCAL))" STARTTLS
AuthLDAPBindDN "CN=oidkerbt,OU=Service Accounts,OU=Users,OU=Global
Resources,DC=macgroup,DC=local"
AuthLDAPBindPassword password_of_ldap_server
Require valid-user
</location>
</pre>
出局:
df1.merge(df2,on='x',how='outer').sort_values('x').ffill().bfill()