我是python的新手,所以如果这个问题看起来很初级的话,我先道歉。我正在尝试把一个 Dataframe 的列拉到另一个 Dataframe 中。我想用一个包含平均值的列替换第一个 Dataframe 中的重复列,并放到第二个 Dataframe 中。我希望这是有意义的!
为了提供一些背景知识,我正在跟踪某些时间点的基因表达。我有一个17行x33列的数据框。这个数据框中的每一行对应一个特定的外显子。这个数据框中的每一列对应一个时间点(AGE)。
Dataframe 如下所示:x1c 0d1x
其中一些列包含相同的名称(年龄),我只想计算具有相同名称的列的平均值,这样,例如,我得到一列“12 pcw”,而不是三个单独的列“12 pcw”。之后,我希望将这些值从第一个 Dataframe 拉到第二个 Dataframe 中,以获得平均值。
我希望使用一个for循环来循环遍历每个age(列),以获得所有主题的平均表达式。
我将在下面解释我的过程:
1)从年龄列表中获取UNIQUE字符串名称列表
unique_ages = set(column_names)
2)创建一个空的数据框,给出我希望平均数据适合/放入的内容的轮廓
mean_df = pd.DataFrame(index=exons, columns=unique_ages)
3)现在,我想循环遍历每个年龄段,以获得当前献血者的平均表达,这就是我尝试利用***for循环***创建一个管道来处理其他 Dataframe ,我将在未来使用这些 Dataframe 。
for age in unique_ages:
print(age)
age_df = pd.DataFrame() ##pull columns of df as separate df that have this string
if len(age_df.columns) > 1: ##check if df has >1 SAME column, if so, take avg across SAME columns
mean = df.mean(axis=1)
mean_df[age] = mean
else:
## just pull out the values and put them into your temp_df
1条答案
按热度按时间fnvucqvd1#
不需要
for loop
(Pandas:)),你可以直接使用df.groupby(lambda x:x, axis=1).mean()
,例如:groupby
函数采用另一个函数(lambda),这基本上意味着它将插入每个列名,并返回该列所属的组。在我们的示例中,我们只希望列名本身就是组。因此,在名为col2
的第三列上,它会说'this column belong to group namedcol2
',而这个组已经存在(因为第二列已经在前面传递过了),然后提供所需的聚合,在本例中是mean()
。