添加 python 中的嵌套列
Addition with nested columns in python
我有一个 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 中使用这些嵌套列表。
谢谢!
我们可以 select 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)
Returns:
{1: -3, 2: 2, 3: -6, 4: -8}
我有一个 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 中使用这些嵌套列表。
谢谢!
我们可以 select 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)
Returns:
{1: -3, 2: 2, 3: -6, 4: -8}