在 pandas 数据框中连接多索引信息
concatenating multi-indexed information within a pandas dataframe
我有一个如下所示的多索引数据框:
col1 col2 col3 col4
row1 0 A A b b
1 B B c c
row2 0 A B d d
1 B B e e
并想知道连接信息的最有效方式,例如对于 row1+col1、row1+col2 等,我的结果将是:
col1 col2 col3 col4
row1 AB AB bc bc
row2 AB BB de de
到目前为止,我认为最好/唯一的方法是:
dx = pd.concat(
[df[col].unstack().apply(lambda row: row.str.cat(sep=''),axis=1)
for col in df.columns],
axis=1,
)
dx.columns = df.columns
实际上,此特定数据框的大小为 150 万行乘以 1000 列,因此欢迎采用更有效的迭代方式!
字符串是 sum
兼容的,所以这将简单地通过在索引的第一级分组来实现:
df.groupby(level=0).apply(sum)
Out[37]:
col1 col2 col3 col4
row1 AB AB bc bc
row2 AB BB de de
我有一个如下所示的多索引数据框:
col1 col2 col3 col4
row1 0 A A b b
1 B B c c
row2 0 A B d d
1 B B e e
并想知道连接信息的最有效方式,例如对于 row1+col1、row1+col2 等,我的结果将是:
col1 col2 col3 col4
row1 AB AB bc bc
row2 AB BB de de
到目前为止,我认为最好/唯一的方法是:
dx = pd.concat(
[df[col].unstack().apply(lambda row: row.str.cat(sep=''),axis=1)
for col in df.columns],
axis=1,
)
dx.columns = df.columns
实际上,此特定数据框的大小为 150 万行乘以 1000 列,因此欢迎采用更有效的迭代方式!
字符串是 sum
兼容的,所以这将简单地通过在索引的第一级分组来实现:
df.groupby(level=0).apply(sum)
Out[37]:
col1 col2 col3 col4
row1 AB AB bc bc
row2 AB BB de de