从 Pandas Groupby().sum() 的输出中创建新列
在 Python 中处理数据时,通常需要这样做执行计算并根据现有值在 DataFrame 中创建新列。在此示例中,我们希望创建一个新列 (Data4),其中包含每个日期的 Data3 之和。
使用 .transform()
来实现为此,我们可以在分组的 Data3 列上使用 .transform() 方法。 .transform() 对每个组应用一个函数,并返回一个 Series,其索引与原始 DataFrame 对齐。这允许我们将计算值添加为新列。
df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')
在提供的示例 DataFrame 中:
import pandas as pd df = pd.DataFrame({ 'Date': ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 'Sym': ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 'Data2': [11, 8, 10, 15, 110, 60, 100, 40], 'Data3': [5, 8, 6, 1, 50, 100, 60, 120] })
使用 .transform(),我们计算 Data3 的总和每个日期并将其分配给新列 Data4:
df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')
生成的 DataFrame 将具有所需的 Data4专栏:
Date Sym Data2 Data3 Data4 0 2015-05-08 aapl 11 5 55 1 2015-05-07 aapl 8 8 108 2 2015-05-06 aapl 10 6 66 3 2015-05-05 aapl 15 1 121 4 2015-05-08 aaww 110 50 55 5 2015-05-07 aaww 60 100 108 6 2015-05-06 aaww 100 60 66 7 2015-05-05 aaww 40 120 121
以上是如何使用 Groupby().sum() 和 .transform() 在 Pandas DataFrame 中创建新列?的详细内容。更多信息请关注PHP中文网其他相关文章!