在由具有不同列名的 DataFrame 组成的字典中应用函数

Posted

技术标签:

【中文标题】在由具有不同列名的 DataFrame 组成的字典中应用函数【英文标题】:Apply a function in dictionary composed of DataFrames with different column names 【发布时间】:2022-01-20 00:23:40 【问题描述】:

我一直在努力尝试获取由 n 个数据帧组成的字典“d”,并将其应用于它们:

idf = idf.iloc[idf.index.repeat(idf.iloc[:,0])]

这是一个在每个数据帧的第 0 列重复索引次数的函数。像这样的:

BEFORE:         AFTER:

Index           Index
1290  2         1290  2
1320  3         1290  2 
1400  4         1320  3
                1320  3
                1320  3
                1400  4
                1400  4
                1400  4
                1400  4

因此,字典“d”具有看起来像之前列的数据框。我尝试了这种方式来应用该功能:

    for idf in d:
        d = idf.iloc[idf.index.repeat(idf.iloc[:,0])]

当我手动选择列名时,我可以这样做,但是这些数据框有不同的列名(故意)。但我不能应用它,因为 .iloc[ ] 不适用于字符串(我觉得很奇怪,因为它没有选择字典的值,而是使用字典的字符串)。

如果我想要返回应用了函数的字典“d”,我该如何解决?

谢谢!

编辑:

    字典“d”中的一个数据框的示例图片,请记住,每个数据框的第一列 [0] 的名称是不同的(并且不应因数据管理而更改):

    我已经知道如何重复 n 次了,我的问题是将其应用于带有数据框的字典。

【问题讨论】:

您能展示其中一个数据框的示例吗? 这能回答你的问题吗? Repeat Rows in Data Frame n Times 这能回答你的问题吗? Replicating rows in a pandas data frame by a column value @nikeros 不,我知道如何使用我编写的第一个函数连续重复 n 次,我想要做的是将该函数应用于字典中的每个数据帧“d " 自动 【参考方案1】:

这是在做你需要的吗?

import pandas as pd

df1 = pd.DataFrame("a":[2, 3, 4, 3], "col1":[1, 2, 3, 4])
df1.set_index("a", inplace=True)

df2 = pd.DataFrame("b":[1, 2, 4], "col2":[3, 2, 1])
df2.set_index("b", inplace=True)

d = "df1": df1, "df2": df2


for idf,this_df in d.items():
    d[idf] = this_df.loc[this_df.index.repeat(this_df.iloc[:,0])]

【讨论】:

我收到错误“IndexError: positional indexers are out-of-bounds” @Juank 你现在试试 - 我已经包含了我的整个例子 当您提供示例时它运行良好,我能够理解该功能。谢谢!

以上是关于在由具有不同列名的 DataFrame 组成的字典中应用函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Python 字典附加到 Pandas DataFrame,将键与列名匹配

附加具有多列索引和重叠列名的 DataFrame

在 Swift 中,如何在由结构对象数组组成的字典中进行搜索?

从字典创建 Python DataFrame,其中键是列名,值是行

在由union运算符组合起来的select语句中,不能有order by语句,但是,可以对最后的结

合并两个具有相同列名但在熊猫中列数不同的数据框