【问题标题】:Addition with nested columns in python在python中添加嵌套列
【发布时间】:2018-07-30 02:14:46
【问题描述】:

我有一个 pandas groupby 对象,它是由一个更大的数据框制作的,其中金额分组在一个人员 ID 变量下,以及它是传入交易还是传出交易。举个例子:

ID In_Out Amount
1 In 5
1 Out 8
2 In 4
2 Out 2
3 In 3
3 Out 9
4 Out 8

(对不起,我不知道如何放入实际的样本数据)。请注意,有些人可能有一个或另一个(例如,也许他们有一些出去但没有进来)。

我只想得到金额的差额,倒在人的下面。因此,理想的输出可能是字典或其他数据框,其中包含每个人的金额差异,如下所示:

ID Difference
1 -3
2 2
3 -6
4 -8

我尝试了几种不同的方法来做到这一点,但不确定如何在 python 中使用这些嵌套列表。

谢谢!

【问题讨论】:

    标签: python pandas data-science pandas-groupby


    【解决方案1】:

    我们可以选择 Out 的行并将它们转换为负整数,然后使用 sum()。

    import pandas as pd
    
    s = '''\
    ID In_Out Amount
    1  In     5
    1  Out    8
    2  In     4
    2  Out    2
    3  In     3
    3  Out    9
    4  Out    8'''
    
    # Recreate dataframe
    df = pd.read_csv(pd.compat.StringIO(s), sep='\s+')
    
    # Select rows where In_Out == 'Out' and multiple by -1
    df.loc[df['In_Out'] == 'Out', 'Amount'] *= -1
    
    # Convert to dict
    d = df.groupby('ID')['Amount'].sum().to_dict()
    print(d)
    

    返回:

    {1: -3, 2: 2, 3: -6, 4: -8}
    

    【讨论】:

    • 这在某种程度上造成了另一个问题,我无法安装 IO 包。 Pycharm 声称找不到兼容的版本
    • @lucretiuss 没关系。只需使用最后两行。或者等待...尝试使用 pd
    • 这实际上是我最终做的,而且似乎奏效了!非常感谢。
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 2016-12-10
    • 2018-04-25
    相关资源
    最近更新 更多