【发布时间】:2021-03-07 13:04:16
【问题描述】:
我有两个数据框:
数据框 1(项目数据)
project_data = pd.DataFrame({'record_id' : ('1','2','3'), 'account_number' : ('123','124','125'), 'city' :('Vancouver','Miami','Dublin'),'salary' :(70000,80000,65000)})
Dataframe 2(项目数据字典)
data_dict = pd.DataFrame({'variable_name' : ('record_id','account_number','city','salary'), 'form_name' : ('crosswalk_form','crosswalk_form','demographics','demographics')})
我希望能够从 Dataframe 2(数据字典)中引入 form_name 变量,但由于数据框之间没有可连接的公共列,因此不知道如何去做。
我想问有没有一种方法可以将数据框 1(项目数据)中的列标题连接到数据框 2(数据字典)中的 variable_name 列。还是我需要重塑其中一个数据框(可能是 Dataframe 1)?
可能的输出
merged_data = pd.DataFrame({'record_id' : ('1','2','3'), 'account_number' : ('123','124','125'), 'city' :('Vancouver','Miami','Dublin'),'salary' :(70000,80000,65000),'form_name' : ('crosswalk_form','crosswalk_form','demographics')})
我希望这个form_name 列对变量进行分类,以获取我想要进一步做的一些描述性统计数据。谢谢。
【问题讨论】:
-
这能回答你的问题吗? Pandas Merging 101
-
merged_data中的form_name列在逻辑上是错误的,因为form_name应该与特定的列相关联,而不是与行相关联。因此,这个问题似乎无法通过编辑来解决。 OP 必须重新考虑用例并定义逻辑上可行的输出规范。 -
@BillHuang 是的,这是正确的,我没有跨数据帧的公共密钥。我只是想知道有没有办法重塑数据(数据框 1)所以我可以在重塑后的数据框上进行合并,并将重塑后的数据框的列重命名为与其他数据框(数据框 2)相同所以我可以这样做。谢谢。
-
DF 2 (
salary demographics) 中的最后一行在您可能的输出中位于何处?无缘无故消失了? -
@BillHuang DF 2 不是数据,而是描述正在收集的项目数据的元数据。我只是想知道有没有一种方法可以利用这些数据来帮助根据
form_name对字段进行分类。感谢以下解决方案。我必须测试我是否可以使用新的MultiIndex。我是这类工作的新手,Multindex 对您的工作示例特别有用吗?将列/行分组在一起?
标签: python-3.x pandas dataframe merge