使用另一个datafram的条件填充并生成一个dataframe

2024-06-06 00:49:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,一个有单独的数据,另一个是单独数据的配置规则。 这些是数据帧:

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

我需要生成的单个数据帧如下所示

结果数据框:

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列获取到最终的数据帧。你知道吗


Tags: 数据namecomidaddressemailemployeefirst
1条回答
网友
1楼 · 发布于 2024-06-06 00:49:51

你想做的事情并不十分清楚。不过,我希望这能对你有所帮助。你知道吗

首先处理第一个数据集以提取值。你知道吗

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

相关问题 更多 >