Pandas 熊猫堆栈在两列的组合上找到唯一
我试图在Field1、Field2中找到唯一的值,以及Value1、Value2中相应值的总和 请在下面找到输入和输出示例。我尝试使用堆栈,但无法获得类似的输出 输入 输出 如果列与其他列一起包含特定值,我将尝试删除行 例如,在上面的输出中,如果带A、B的行与其他行一起出现,我将删除它们,如果它们单独出现,我将打印它们。请参阅下面的新输出 输出2 与groupby和aggregate sum一起使用: lreshape的替代方案,但仍不是官方的:Pandas 熊猫堆栈在两列的组合上找到唯一,pandas,pandas-groupby,Pandas,Pandas Groupby,我试图在Field1、Field2中找到唯一的值,以及Value1、Value2中相应值的总和 请在下面找到输入和输出示例。我尝试使用堆栈,但无法获得类似的输出 输入 输出 如果列与其他列一起包含特定值,我将尝试删除行 例如,在上面的输出中,如果带A、B的行与其他行一起出现,我将删除它们,如果它们单独出现,我将打印它们。请参阅下面的新输出 输出2 与groupby和aggregate sum一起使用: lreshape的替代方案,但仍不是官方的: 看起来您正在尝试将这些值相加作为过程的一部分;添
看起来您正在尝试将这些值相加作为过程的一部分;添加一个关于你想要达到的目标的解释会使回答问题变得更简单。谢谢!新增一期。你能检查一下吗?Thnks in advanceI要删除带有“A”和“B”的行,只有在id=2,3的情况下,对于给定id,这些行与其他值一起出现。如果它们不与其他值一起出现,我将保留它们,如在id=1的情况下Thanks@Nani-你能提出新问题吗?这似乎更复杂。
id Field1 Value1 Field2 Value2
1 A 1 B 0
1 A 0
2 A 1 D 1
3 C 1 A 0
4 E 0
3 A 1 C 1
4 F 1
id Field Value
1 A 1
1 B 0
2 A 1
2 D 1
3 C 2
3 A 1
4 E 0
4 F 1
id Field Value
1 A 1
1 B 0
2 D 1
3 C 2
4 E 0
4 F 1
df = (pd.wide_to_long(df.reset_index(), stubnames=['Field', 'Value'], i='index', j='id')
.reset_index(drop=True)
.groupby(by=['id', 'Field'], as_index=False)['Value'].sum())
df = (pd.lreshape(df, {'Value':['Value1','Value2'], 'Field':['Field1','Field2']})
.groupby(['id', 'Field'], as_index=False)['Value'].sum())
print (df)
id Field Value
0 1 A 1.0
1 1 B 0.0
2 2 A 1.0
3 2 D 1.0
4 3 A 1.0
5 3 C 2.0
6 4 E 0.0
7 4 F 1.0