在由具有不同列名的 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,将键与列名匹配
在 Swift 中,如何在由结构对象数组组成的字典中进行搜索?
从字典创建 Python DataFrame,其中键是列名,值是行