从pandas数据框架中提取所有的行组合(系统提取和追加行)。

问题描述 投票:0回答:1

我在箍谁能提供一个循环,可以解决我的问题。先谢谢你。

我有一个有63行的数据框。从数据框A中,我想把Dataframe A中的2条记录的每一个可能的组合追加到Dataframe B中,然后在新创建的Dataframes上运行分析。我还想在将行追加到Dataframe B并运行分析后跟踪结果。所以我想要一个打印语句或表格,基本上说明 "追加行M和N并运行分析后的结果是y"。

这张图直观地列出了我想要的东西

python pandas loops dataframe combinatorics
1个回答
0
投票

你可以使用itertools组合来创建组合,如下所示。dfA是你想要创建组合的数据框,dfB是你想要追加到的数据框。

import pandas as pd
from itertools import combinations

mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},{'a': 100, 'b': 200, 'c': 300, 'd': 400},{'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
dfA = pd.DataFrame(mydict)
dfB = pd.DataFrame([{'a': 666, 'b': 777, 'c': 888, 'd': 999}])

获取列表中的所有行

row_list = []
for i in range(dfA.shape[0]): # Loops over all the integers from 0 to Number of Rows
    row_list.append(list(dfA.iloc[i, :])) # iloc basically slices that particular row

创建行的所有组合

all_combinations = list(combinations(row_list, 2))

# List of Resultant Dataframes
dfResult = []
columns = dfB.columns

# Loop over each combination and convert them into a DataFrame to append to dfB Dataframe
for each_combination in all_combinations:
    combination_df = pd.DataFrame(list(each_combination), columns=list(dfB.columns))
    result_combination_df = dfB.append(combination_df, ignore_index=True)

希望对你有所帮助!

我自己是SO的新人,无法对你的问题进行评论,所以在这里说一下。我相信,如果你能提供你已经开始工作的内容,以及你卡在哪里,那么你的问题被回答的机会会更大,这样大家就能给你针对性的帮助,而不是完整的解决方案。干杯,伙计! :)

© www.soinside.com 2019 - 2024. All rights reserved.