我想自动化下面的python代码,以应用于不同的数据帧。
df_twitter = pd.read_csv('merged_watsonTwitter.csv')
df_original = pd.read_csv('merged_watsonOriginal.csv')
sample_1_twitter = df_twitter['ID_A'] == "08b56ebc-8eae-41b3-9c86-c79e3be542fd"
sample_1_twitter = df_twitter[sample_1_twitter]
sample_1_original = df_original['ID_B'] == "08b56ebc-8eae-41b3-9c86-c79e3be542fd"
sample_1_original = df_original[sample_1_original]
sample_1_twit_trunc = sample_1_twitter[['raw_score_parent_A','raw_score_child_A']]
sample_1_ori_trunc = sample_1_original[['raw_score_parent_B','raw_score_child_B']]
sample_1_twit_trunc.reset_index(drop=True, inplace=True)
sample_1_ori_trunc.reset_index(drop=True, inplace=True)
sample_1 = pd.concat([sample_1_twit_trunc, sample_1_ori_trunc], axis=1)
sample_1['ID'] = '08b56ebc-8eae-41b3-9c86-c79e3be542fd'
stats.ttest_rel(sample_1['raw_score_child_B'], sample_1['raw_score_child_A'])例如,上面的代码表示ID "08b56ebc-8eae-41b3-9c86-c79e3be542fd“是一个特定的人。如果我要计算我拥有的所有样本的T-test,那么我需要通过复制并粘贴到上面的代码中来不断地为每个人替换不同的ID。
有没有一种方法来自动化这个过程,从而使这些部分;
df_twitter['ID_A'] == "08b56ebc-8eae-41b3-9c86-c79e3be542fd"
df_original['ID_B'] == "08b56ebc-8eae-41b3-9c86-c79e3be542fd"
sample_1['ID'] = '08b56ebc-8eae-41b3-9c86-c79e3be542fd'我可以接受我所有的ID,并自动化整个过程。
最后,保存此函数生成的每个结果输出:
stats.ttest_rel(sample_1['raw_score_child_B'], sample_1['raw_score_child_A'])发布于 2018-06-11 12:19:31
正如Klaus提到的,你需要一个接受参数的函数。你可以试着把你的代码放在一个函数中。您可能希望将您的ID存储在任何可迭代集合的列表中。您还可以将t-test结果存储在列表中。
ids = ["08b56ebc-8eae-41b3-9c86-c79e3be542fd","08b56ebc-8eae-41b3-9c86-c79e3be542f4"]
def runTTest (id,df_twitter,df_original):
sample_1_twitter = df_twitter['ID_A'] == id
sample_1_twitter = df_twitter[sample_1_twitter]
sample_1_original = df_original['ID_B'] == id
sample_1_original = df_original[sample_1_original]
sample_1_twit_trunc =
sample_1_twitter[['raw_score_parent_A','raw_score_child_A']]
sample_1_ori_trunc =
sample_1_original[['raw_score_parent_B','raw_score_child_B']]
sample_1_twit_trunc.reset_index(drop=True, inplace=True)
sample_1_ori_trunc.reset_index(drop=True, inplace=True)
sample_1 = pd.concat([sample_1_twit_trunc, sample_1_ori_trunc], axis=1)
sample_1['ID'] = id
return stats.ttest_rel(sample_1['raw_score_child_B'], sample_1['raw_score_child_A'])
t_test_results=[]
for id in ids:
t_test_results.append(runTTest(id,df_twitter ,df_original))https://stackoverflow.com/questions/50790266
复制相似问题