按 Python 中的多个条件对数据进行分组
Grouping data by multiple criteria in Python
我想我有一个快速的问题,但我没有找到用简单的词 google 的方法。
我有这样的原始数据集:
Number of account Value
123 100
456 300
789 400
910 100
674 250
而且我有一个方法 table 可以将这些原始数据整合成有用的东西。看起来像:
Variable Number of account
"a" 123, 456, 910
"b" 789,674
所以,最后我想得到一个 table 这样的:
Variable Number of account
"a" Sum of values for(123, 456, 910)
"b" Sum of values for(789,674)
我最初的想法是做这样的事情:对于方法论中的每一行table,对于方法论中的每个账户数量table,原始数据中的总和值.
两个问题:
- 巩固它的最佳方法是什么?
- 如果在方法论中 table 多个帐户是逗号分隔的字符串怎么办? (“123,456,910”)。我可以在 pandas DataFrame
的一个单元格中存储多个数字吗
假设我有两个数据帧中的数据:
df
是:
Number_of_account Value
123 100
456 300
789 400
910 100
674 250
和table_2
是:
Variable Number_of_account
"a" 123,456,910
"b" 789,674
首先,我将从 table2 中创建一个查找 table:
lookup_table = pd.concat([pd.Series(row['Variable'], row['Number_of_account'].split(','))
for _, row in table_2.iterrows()]).reset_index()
lookup_table.columns = ["Number_of_account", "variable"]
lookup_table.Number_of_account = pd.to_numeric(lookup_table.Number_of_account)
结果是:
Number_of_account variable
0 123 a
1 456 a
2 910 a
3 789 b
4 674 b
然后,我将主数据框 (df
) 与查找 table 合并,并使用 groupby
计算值的总和。
df = pd.merge(df, lookup_table, on="Number_of_account")
df.groupby("variable")["Value"].sum()
结果是:
variable
a 500
b 650
我想我有一个快速的问题,但我没有找到用简单的词 google 的方法。
我有这样的原始数据集:
Number of account Value
123 100
456 300
789 400
910 100
674 250
而且我有一个方法 table 可以将这些原始数据整合成有用的东西。看起来像:
Variable Number of account
"a" 123, 456, 910
"b" 789,674
所以,最后我想得到一个 table 这样的:
Variable Number of account
"a" Sum of values for(123, 456, 910)
"b" Sum of values for(789,674)
我最初的想法是做这样的事情:对于方法论中的每一行table,对于方法论中的每个账户数量table,原始数据中的总和值.
两个问题:
- 巩固它的最佳方法是什么?
- 如果在方法论中 table 多个帐户是逗号分隔的字符串怎么办? (“123,456,910”)。我可以在 pandas DataFrame 的一个单元格中存储多个数字吗
假设我有两个数据帧中的数据:
df
是:
Number_of_account Value
123 100
456 300
789 400
910 100
674 250
和table_2
是:
Variable Number_of_account
"a" 123,456,910
"b" 789,674
首先,我将从 table2 中创建一个查找 table:
lookup_table = pd.concat([pd.Series(row['Variable'], row['Number_of_account'].split(','))
for _, row in table_2.iterrows()]).reset_index()
lookup_table.columns = ["Number_of_account", "variable"]
lookup_table.Number_of_account = pd.to_numeric(lookup_table.Number_of_account)
结果是:
Number_of_account variable
0 123 a
1 456 a
2 910 a
3 789 b
4 674 b
然后,我将主数据框 (df
) 与查找 table 合并,并使用 groupby
计算值的总和。
df = pd.merge(df, lookup_table, on="Number_of_account")
df.groupby("variable")["Value"].sum()
结果是:
variable
a 500
b 650