【问题标题】:How to concat a series to a pandas dataframe in pyhton?如何在 python 中将系列连接到 pandas 数据框?
【发布时间】:2022-12-03 13:25:36
【问题描述】:

我想遍历一个数据框行并将该行连接到一个不同的数据框,基本上是用一些行构建一个不同的数据框。

例如: `IPCSection and IPCClass Dataframes


allcolumns = np.concatenate((IPCSection.columns, IPCClass.columns), axis = 0)
finalpatentclasses = pd.DataFrame(columns=allcolumns)
for isec, secrow in IPCSection.iterrows():
    for icl, clrow in IPCClass.iterrows():
        if (secrow[0] in clrow[0]):
            pdList = [finalpatentclasses, pd.DataFrame(secrow), pd.DataFrame(clrow)]
            finalpatentclasses = pd.concat(pdList, axis=0, ignore_index=True)
display(finalpatentclasses)

The output is:

我希望 nan 值消失并将所有数据移动到正确的列下。我试过 axis = 1 但弄乱了列名。 Append 也不起作用,所有值也都对角放置在具有 nan 值的表中。

【问题讨论】:

标签: python dataframe loops


【解决方案1】:

当前实现的问题是pd.concataxis=0ignore_index=True 调用,导致secrowclrow 的值被垂直连接并且原始索引被忽略。这会导致值与最终数据帧的列不对齐,如输出所示。

要解决此问题,您可以创建一个与最终数据帧具有相同列的新数据帧,然后将 secrowclrow 中的值分配给新数据帧中的相应列。之后,您可以像以前一样使用 pd.concat 函数和 axis=0 将新数据帧附加到最终数据帧。

这是应该产生所需输出的代码的修改版本:

allcolumns = np.concatenate((IPCSection.columns, IPCClass.columns), axis=0)
finalpatentclasses = pd.DataFrame(columns=allcolumns)
for isec, secrow in IPCSection.iterrows():
    for icl, clrow in IPCClass.iterrows():
        if (secrow[0] in clrow[0]):
            # Create a new dataframe with the same columns as the final dataframe
            newrow = pd.DataFrame(columns=allcolumns)
            # Assign the values from secrow and clrow to the appropriate columns in the new dataframe
            newrow[IPCSection.columns] = secrow.values
            newrow[IPCClass.columns] = clrow.values
            # Append the new dataframe to the final dataframe
            finalpatentclasses = pd.concat([finalpatentclasses, newrow], axis=0)
display(finalpatentclasses)

这应该会产生一个最终的数据框,其中 secrowclrow 的值在正确的列下水平连接,没有 nan 值。

【讨论】:

    猜你喜欢
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 2021-07-31
    相关资源
    最近更新 更多