簡體   English   中英

使用來自另一個數據框的條件填充並生成熊貓數據框

[英]Populate and generate a pandas dataframe using conditions from another dataframe

我有2個數據框,一個包含單個數據,另一個數據框是單個數據的配置規則。 這些是數據幀:

DF1:

  employee_Id first_Name  last_Name    email_Address   
0       E1000       Manas         Jani      jam@xyz.com
1       E2000         Jim         Kong      jik@xyz.com
2       E3000       Olila   Jayavarman      olj@xyz.com
3       E4000        Lisa     Kopkingg      lik@xyz.com
4       E5000     Kishore      Pindhar      kip@xyz.com
5       E6000        Gobi        Nadar      gon@xyz.com

DF2:

  Input_file_name Is_key Config_file_name           Value
0     Employee ID      Y      employee_Id  idTypeCode:001
4        EntityID      N        entity_Id    entity_Id:01

我需要得到的單個數據框看起來像這樣,

Result_df:

employee_Id first_Name  last_Name    email_Address      idTypeCode  entity_Id
0       E1000       Manas         Jani      jam@xyz.com         001         01
1       E2000         Jim         Kong      jik@xyz.com         001         01
2       E3000       Olila   Jayavarman      olj@xyz.com         001         01
3       E4000        Lisa     Kopkingg      lik@xyz.com         001         01
4       E5000     Kishore      Pindhar      kip@xyz.com         001         01
5       E6000        Gobi        Nadar      gon@xyz.com         001         01

我無法理解如何將“ Value列添加到最終數據框。

您想做的不是很清楚。 但是,我希望這會對您有所幫助。

首先處理第一個數據集以提取值。

import pandas as pd
import io

# test data
zz = """Input_file_name Is_key Config_file_name           Value
0     Employee ID      Y      employee_Id  idTypeCode:001
4        Entity ID      N        entity_Id    entity_Id:01
"""

df = pd.read_table(io.StringIO(zz), delim_whitespace=True)


extract = df['Value'].str.split(':',expand=True).transpose()
extract.columns = extract.iloc[0]
extract = extract.drop(extract.index[0]).reset_index(drop=True)
print(extract)

# 0 idTypeCode entity_Id
# 0        001        01

然后將兩者合並。

# test data
zz = """employee_Id first_Name  last_Name    email_Address   
0       E1000       Manas         Jani      jam@xyz.com
1       E2000         Jim         Kong      jik@xyz.com
2       E3000       Olila   Jayavarman      olj@xyz.com
3       E4000        Lisa     Kopkingg      lik@xyz.com
4       E5000     Kishore      Pindhar      kip@xyz.com
5       E6000        Gobi        Nadar      gon@xyz.com
"""
empl = pd.read_table(io.StringIO(zz), delim_whitespace=True)

pd.concat([empl, extract], axis=1, join='outer', ignore_index=True).fillna(method='ffill')

#   employee_Id first_Name   last_Name email_Address idTypeCode entity_Id
# 0       E1000      Manas        Jani   jam@xyz.com        001        01
# 1       E2000        Jim        Kong   jik@xyz.com        001        01
# 2       E3000      Olila  Jayavarman   olj@xyz.com        001        01
# 3       E4000       Lisa    Kopkingg   lik@xyz.com        001        01
# 4       E5000    Kishore     Pindhar   kip@xyz.com        001        01
# 5       E6000       Gobi       Nadar   gon@xyz.com        001        01

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM