【发布时间】:2022-01-11 14:26:22
【问题描述】:
问题
我的第一个 DataFrame 包含以下内容:
df1 = pd.DataFrame(
[[1, 'C_A'], [2, 'C_B'], [3, 'C_C'], [3, 'C_D'], [4, 'C_F']],
columns=['time', 'category']
)
time category
0 1 C_A
1 2 C_B
2 3 C_C
3 3 C_D
4 4 C_F
一些行包含多个时间条目。
现在我的第二个 df 是每个类别的概率分布:
df2 = pd.DataFrame(
[[1., 0., 0., 0., 0.], [0., 1., 0., 0., 0.],
[0., 0., 0.7, 0.3, 0.], [1, 0., 0., 0., 0.]],
columns=['C_A', 'C_B', 'C_C', 'C_D', 'C_F']
)
C_A C_B C_C C_D C_F
0 1.0 0.0 0.0 0.0 0.0
1 0.0 1.0 0.0 0.0 0.0
2 0.0 0.0 0.7 0.3 0.0
3 1.0 0.0 0.0 0.0 0.0
对于只有一次的行,我想保持原样。
但是,例如,对于df1 的 3rd 和 4th 行,我想只保留多行中的 1 个,作为一个 有
最高概率。
最终的结果是:
pd.DataFrame(
[[1, 'C_A'], [2, 'C_B'], [3, 'C_C'], [4, 'C_F']],
columns=['time', 'category']
)
time category
0 1 C_A
1 2 C_B
2 3 C_C
3 4 C_F
问题
如何在这些多行出现时折叠它们,并根据我的其他 DataFrame 保留概率最大的行?
【问题讨论】:
-
df1中的time列是否表示df2的索引? -
@QuangHoang 是的
标签: python pandas dataframe pandas-groupby