计算和比较数据帧之间的值以创建新数据帧

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

假设我有 50 个数据框,其中包含日期索引和标记为是/否的列。

我想计算数据框中特定日期是/否的数量,以创建一个新的数据框,其中包含每个日期的“是”百分比和“否”百分比。

现在我计划制作数据帧和日期的单独列表,然后使用嵌套的 for 循环来比较和计算是/否列中每个日期的数据点。不是非常手动,但也不确定这是否是最好的方法。

很想听听任何人对更直观的方法的想法,或者我的方法是否有缺陷。

python pandas dataframe time-series
1个回答
0
投票
test1 = pd.DataFrame({
    'check': ['yes', 'no', 'yes','yes','no','no','yes','no','yes','no','yes']
})
test1.index = pd.date_range(start='2024-01-01', periods=len(test1), freq='D')

test2 = pd.DataFrame({
    'check': ['yes', 'yes', 'yes','yes','no','no','yes','yes','yes','no','yes']
})
test2.index = pd.date_range(start='2024-01-01', periods=len(test2), freq='D')

test3 = pd.DataFrame({
    'check': ['no', 'yes', 'no','yes','no','yes','no','no','yes','no','yes']
})
test3.index = pd.date_range(start='2024-01-01', periods=len(test1), freq='D')

number_of_frames = 3
combined_df = pd.concat([test1, test2, test3],axis=1)
combined_df.columns = [f'frame_{i}' for i in range(1,number_of_frames+1)]

results = combined_df.apply(lambda row: row.value_counts(normalize=True), axis=1)
© www.soinside.com 2019 - 2024. All rights reserved.