簡體   English   中英

Pandas:每天生成實驗者-受試者組合

[英]Pandas: Generate Experimenter-Subject Combinations Per Day

我在 dataframe 中有一組實驗日和受試者(下面的匿名子集)。如何在新的 dataframe 中每天生成所有成對比較,其中受試者也扮演實驗者的角色?

輸入:

學科
周一 Α
周一 布拉沃
周一 查理
周三 三角洲
周三 回聲
周三 狐步舞
周三 高爾夫球
周三 酒店

預計 Output:

學科 實驗者
周一 Α 布拉沃
周一 Α 查理
周一 布拉沃 查理
周三 三角洲 回聲
周三 三角洲 狐步舞
周三 三角洲 高爾夫球
周三 三角洲 酒店
周三 回聲 狐步舞
周三 回聲 高爾夫球
周三 回聲 酒店
周三 狐步舞 高爾夫球
周三 狐步舞 酒店
周三 高爾夫球 酒店

到目前為止,我只能生成全部組合,但不能按天生成!

import numpy as np
import pandas as pd
import itertools as it

df = pd.DataFrame({'Day': ['Monday', 'Monday', 'Monday', 'Wednesday', 'Wednesday', 'Wednesday', 'Wednesday', 'Wednesday'],
                    'Subject': ['Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot', 'Golf', 'Hotel']})

pair_order_list = it.combinations(df['Subject'], 2)
pairs = list(pair_order_list)

實際Output

[('Alpha', 'Bravo'), ('Alpha', 'Charlie'), ('Alpha', 'Delta'),...]

任何的建議都受歡迎?

以下代碼似乎生成了預期的 output:

from  itertools import combinations

# https://stackoverflow.com/questions/72811105/how-can-i-search-for-sub-groups-of-dataframe-that-contains-specific-pairs-of-dat.
L = [(i, tuple(y)) for i, x in df.groupby('Day')['Subject'] for y in combinations(x, 2)]
df_2 = pd.DataFrame(L, columns=['Day','SubjExp'])

# https://stackoverflow.com/questions/29550414/how-can-i-split-a-column-of-tuples-in-a-pandas-dataframe.
df_2[['Subject', 'Experimenter']] = pd.DataFrame(df_2['SubjExp'].tolist(), index=df_2.index)
df_2 = df_2.drop('SubjExp', axis=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM