gpt4 book ai didi

pandas - pandas 可以根据名称中的模式拆分/合并列吗?

转载 作者:行者123 更新时间:2023-12-01 02:04:51 26 4
gpt4 key购买 nike

pandas 可以根据列名称中的模式拆分和/或合并列吗?这是一个 DataFrame:

    meas1_left  meas1_right  meas2_left  meas2_right
0 1 2 3 4
1 6 7 8 9

我想把上面的数据和这个(我真的不在乎新框架是如何索引的):

    meas1  meas2  side
0 1 3 left
1 2 4 right
2 6 8 left
3 7 9 right

最佳答案

您可以先通过split 从列创建Multiindex :

df.columns = df.columns.str.split('_', expand=True)
print (df)
meas1 meas2
left right left right
0 1 2 3 4
1 6 7 8 9

然后 stack它:

print (df.stack().reset_index(level=0, drop=True).reset_index())
index meas1 meas2
0 left 1 3
1 right 2 4
2 left 6 8
3 right 7 9

如果需要重命名列 index 并更改列的顺序:

print (df.stack()
.reset_index(level=0, drop=True)
.reset_index()
.rename(columns={'index':'side'})[['meas1','meas2','side']])

meas1 meas2 side
0 1 3 left
1 2 4 right
2 6 8 left
3 7 9 right

编辑:带有indexstr 方法是从0.16.1 实现的,如果使用旧版本尝试:

a = df.columns.to_series().str.split('_').apply(pd.Series)
tuples = list(zip(a.iloc[:,0], a.iloc[:,1]))
print (tuples)
[('meas1', 'left'), ('meas1', 'right'), ('meas2', 'left'), ('meas2', 'right')]

df.columns = pd.MultiIndex.from_tuples(tuples)
print (df)
meas1 meas2
left right left right
0 1 2 3 4
1 6 7 8 9

关于pandas - pandas 可以根据名称中的模式拆分/合并列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39390615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com