从单个df中提取列信息并输入到标识符需要重新映射的多个dfs
Posted
技术标签:
【中文标题】从单个df中提取列信息并输入到标识符需要重新映射的多个dfs【英文标题】:extract column information from a single df and input to multiple dfs where identifier needs remapping 【发布时间】:2021-08-15 14:46:45 【问题描述】:我需要将 df1 中的列中的行数据附加到单独的 dfs 中。 df1 中“i1”列的行值应该对应于它也需要附加的数据帧的名称,并且数据帧之间有一个通用的 id 列。
但是 - i1 名称和表的名称不同。我在下面创建了一个字典,所以你可以明白我的意思。
d_map = 'ab1':'c30_sab1',
'cd2':'kjm_1cd2'
示例数据和预期输出如下所示,用 df1 显示。任何指针都会很棒。非常感谢
df1
df = pd.DataFrame(data='id': [1, 1, 2, 2, 3], 'i1': ['ab1','cd2','ab1','cd2','ab1'], 'i2': ['10:25','10:27','11:51','12:01','13:18'])
需要根据 id 和 i1 匹配从 df1 附加 i2 列的表
c30_sab = pd.DataFrame(data='id': [1, 2, 3])
kjm_1cd = pd.DataFrame(data='id': [1, 2])
预期输出
e_ab1 = pd.DataFrame(data='id': [1, 2, 3], 'i2': ['10:25','11:51','13:18'])
e_cd2 = pd.DataFrame(data='id': [1, 2], 'i2': ['10:27','12:01'])
【问题讨论】:
【参考方案1】:一种简单的方法(假设您在df
id 重复时接受重复):
df_ab1 = df[df['i1'] == 'ab1'] # select only the values for 'ab1' df
df_cd2 = df[df['i1'] == 'cd2'] # select only the values for 'cd2' df
e_ab_1 = ab1.merge(df_ab1[['id', 'i2']], on='id')
e_cd_2 = cd2.merge(df_cd2[['id', 'i2']], on='id')
【讨论】:
感谢@sophros。所以我只是编辑了这个问题,因为在某些情况下,i1 值与表名不匹配,需要重新映射才能正确附加,你可能有什么建议吗?再次感谢! 我明白了。一开始没看到但现在更新了答案来做你需要的。以上是关于从单个df中提取列信息并输入到标识符需要重新映射的多个dfs的主要内容,如果未能解决你的问题,请参考以下文章