繁体   English   中英

在Python(Pandas)中处理数据帧

[英]Manipulating Data Frames in Python(Pandas)

我对python非常陌生,我正在尝试处理Pandas Data Frames。 我有一个DF,当我将该DF传递到CSv文件并在excel中打开时,我的输出是这样的:

Key  Match  Data
sf   111     877    
hd   222     888
kg   Blank   990    
la   Blank     0

因此,对于最后两行,匹配列中的数据为

现在,我有另一个DF,类似于:

Key  Match  Data
sf   111     877    
hd   222     888
kg   333     123    
la   444     421
llk  555     421
jk  666      890

我想使用DF 2中Match列中的数据填充第一个DF中的空白单元格,方法是使用Key列中的数据。 因此,当我转换为CSV时,最终的DF如下所示:-

Key  Match  Data
 sf    111   877    
 hd    222   888    
 kg    333   990    
 la    444     0

如果有人可以帮助我,那就太好了。

如果问题的框架不正确,我们深表歉意。 我也是这个论坛的新手。

加载后,我将在第二个df上设置索引后调用map来执行查找:

In [100]:
df['Match'] = df['Key'].map(df1.set_index('Key')['Match'])
df

Out[100]:
  Key  Match  Data
0  sf    111   877
1  hd    222   888
2  kg    333   990
3  la    444     0

如果您可以用第二个数据框架中的第一个覆盖第一个数据框架的匹配列,则可以执行以下操作:

In [6]: df1 = df1.set_index('Key')

In [7]: df2 = df2.set_index('Key')

In [8]: df1['Match'] = df2['Match']

In [10]: df1
Out[10]: 
     Match  Data
Key             
sf     111   877
hd     222   888
kg     333   990
la     444     0

最终我能够做到这一点

df1 ['MATCH'] = df1.apply(lambda row:getall(row ['key'],df,row ['MATCH']),axis = 1)

然后我开发了getall()函数

** def getall(key,df,match):match1 =匹配

if  (math.isnan(match)):
    match1 = str(df.ix[key,'MATCH'][0])
return match1**

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM