在pandas中合并虚拟DataFrame

时间:2017-03-24 21:21:43

标签: python pandas

我有一个DataFrame列表,它是我的数据集的虚拟变量。我试图找到一种方法将所有这些虚拟变量添加到更大的主虚拟DataFrame中。复杂性开始出现的地方是DataFrames之间的某些标签是相同的。注意:标签应该是相同的名称,我需要以涉及获取当前虚拟名称下的所有数据的方式合并它们。

下面的示例数据
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
    "href",
    "crm_member_id",
    "email_address",
    "account_status"
})
public class Account {

    /**
     * 
     * (Required)
     * 
     */
    @JsonProperty("href")
    private String href;
    /**
     * 
     * (Required)
     * 
     */
    @JsonProperty("crm_member_id")
    private String crmMemberId;
    /**
     * 
     * (Required)
     * 
     */
    @JsonProperty("email_address")
    private String emailAddress;

我的问题是,一些虚拟变量具有相同的名称,必须合并以保持“1”

nested_dummies = [
    DataFrame1,
    DataFrame2,
    DataFrame3,
    ... ,
    DataFrame10
]

总的来说,我有10个这样的DataFrame。最后我需要的是拥有一个Dataframe,其中每个标签中有1个基于10个Dataframe中的虚拟值,具有适当的1或0。

我尝试过concat,combine_first,我手工制作了许多不同的方法,但我无法得到任何东西1)不会覆盖以前的值& 2)将值添加到现有列

有什么想法吗?

FTIW:这个问题源自“;”将字符串分隔为列中的数据点。我已将此信息提取到10个“标记”列中。这些标记列是DataFrames的原因

1 个答案:

答案 0 :(得分:1)

假设我知道你正在寻找什么 - 如果任何一个帧在(索引,标签)单元格中有1个,你想要在最后一帧中为1,否则为0 - 你可以concat然后groupby

In [31]: pd.concat(dfs).groupby(level=0).any().astype(int)
Out[31]: 
   tag1  tag2  tag3  tag4  tag5  tag6  tag9
0     0     1     1     1     0     1     0
1     0     0     1     1     1     1     1
2     1     1     1     0     0     0     0
3     1     1     0     0     0     0     1
4     0     1     1     0     1     0     1
5     1     0     0     1     0     1     0

.max()也应该有用。

(我可能在这里假设太多了 - 我过去做过类似的事情,所以我可能已经用自己的经验填补了piRSq引起注意的空白。)