最近,我一直处理一个可能很难解决的问题,但在尝试这样做之后,我决定寻求帮助。
所以,我有这两个数据帧:
df = pd.DataFrame({
'AlleleID': [1, 2, 3, 4],
'Name': ['a', 'b', 'c', 'd'],
'VariationID':[[1,5,6],[2],[3,7],[4]]
})
df_reviews = pd.DataFrame({
'VariationID': [1, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7],
'Stars': [1, 0, 1, 1, 1, 0, 4, 3, 1, 1, 0],
'Source': ['literature', 'clinical', 'inlab', 'inlab', 'literature', 'clinical', 'inlab', 'inlab', 'inlab',\
'literature', 'literature']
})
目的是将其应用于更大的数据集。我创建了尽可能多的列,然后用零填充它们,将它们添加到df数据集中。对于df_reviews数据集中的每一行,我想使用VariationID列的值来知道此引用的df数据集中的哪一行,然后我想使用该行的其他两个元素(启动数和来源)知道我指的是df中的哪一列。然后我只想将值增加一个。
目标只是计算使用" Stars"的不同组合的条目数量。和"来源"存在于df_reviews数据帧中,用于每个不同的" AlleleID"在df中,但是df中的每一行都可以连接到df_reviews中的多个不同的行,因为它有一个VariationID列表。
我使用了以下代码,我收到了错误" KeyError:True"
star_values = df_reviews['Stars'].unique()
source_values = df_reviews['Source'].unique()
col_names = []
for e in star_values:
for f in source_values:
col_name = 'reviews_stars_%s_source_%s' % (e, f)
col_names.append(col_name)
col_name = 'reviews_stars_%s' % (e)
col_names.append(col_name)
for name in col_names:
df[name] = np.zeros(len(df), dtype = int)
for row in df_reviews.itertuples(index = False, name = None):
col_name = 'reviews_stars_%s_source_%s' % (row[0], row[1])
df.loc[row[2] in df.VariationID,col_name] +=1
print(df)
因此,我需要的是一种有效且快速的方法(因为这将应用于具有500000行的数据帧)以循环遍历df_reviews的每一行,并将df中的相应位置递增1 。
要做到这一点,这是我的问题的主要观点,我将需要基于标签逐行切片,并根据检查外部值是否为&#34;&#34;的布尔结果按行排序34;一行,因为该行的值作为一个列表(大多数情况下一个列表只有一个元素,但有例外,因此我使用该列表格式和&#34; in&#34;方法)< / p>
提前感谢能够提供帮助的任何人。我想对于那些比我更熟悉熊猫的人来说这将是一个非常简单的问题,但它确实让我陷入困境。
这是所需的输出:
AlleleID Nome VariationID reviews_stars_1_source_literature \
0 1 a [1, 5, 6] 2
1 2 b [2] 0
2 3 c [3, 7] 1
3 4 d [4] 0
reviews_stars_1_source_clinical reviews_stars_1_source_inlab \
0 0 2
1 0 1
2 0 0
3 0 0
reviews_stars_1 reviews_stars_0_source_literature \
0 4 0
1 1 0
2 1 1
3 0 0
reviews_stars_0_source_clinical reviews_stars_0_source_inlab \
0 1 0
1 0 0
2 1 0
3 0 0
reviews_stars_0 reviews_stars_4_source_literature \
0 1 0
1 0 0
2 2 0
3 0 0
reviews_stars_4_source_clinical reviews_stars_4_source_inlab \
0 0 0
1 0 0
2 0 0
3 0 1
reviews_stars_4 reviews_stars_3_source_literature \
0 0 0
1 0 0
2 0 0
3 1 0
reviews_stars_3_source_clinical reviews_stars_3_source_inlab \
0 0 1
1 0 0
2 0 0
3 0 0
reviews_stars_3
0 1
1 0
2 0
3 0
tl; dr得到了一个&#34; KeyError:true&#34;尝试通过检查特定值是否为&#34;来尝试从数据帧中选择数据时出错?每行,包含列的行。