使用多索引更改数据框的形状
Change shape of dataframe with multiindex
如何更改我的多索引数据框的形状:
像这样,但所有单元格值,不仅是第一个索引:
我已经尝试这样做了,但不知何故只收到上面这段代码的数据帧:
numbers = [100,50,20,10,5,2,1]
for number in numbers:
dfj[number] = df['First_column_value_name'].xs(key=number, level='Second_multiindex_column_name')
list_of_columns_position = []
for number in numbers:
R_string = '{}_R'.format(number)
list_of_columns_position.append(R_string)
df_positions_as_columns = pd.concat(dfj.values(), ignore_index=真, 轴=1)
df_positions_as_columns.columns = list_of_columns_position
将你的第一列分成两部分,然后将结果与第二列连接起来,最后旋转你的数据框:
设置:
data = {'A': ['TLM_1/100', 'TLM_1/50', 'TLM_1/20',
'TLM_2/100', 'TLM_2/50', 'TLM_2/20'],
'B': [11, 12, 13, 21, 22, 23]}
df = pd.DataFrame(data)
print(df)
# Output:
A B
0 TLM_1/100 11
1 TLM_1/50 12
2 TLM_1/20 13
3 TLM_2/100 21
4 TLM_2/50 22
5 TLM_2/20 23
>>> df[['B']].join(df['A'].str.split('/', expand=True)) \
.pivot(index=0, columns=1, values='B') \
.rename_axis(index=None, columns=None) \
.add_suffix('_R')
100_R 20_R 50_R
TLM_1 11 13 12
TLM_2 21 23 22
使用正则表达式将标签列拆分为两列 a 和 b,然后按列 a 分组并取消分组。
如何更改我的多索引数据框的形状:
像这样,但所有单元格值,不仅是第一个索引:
我已经尝试这样做了,但不知何故只收到上面这段代码的数据帧:
numbers = [100,50,20,10,5,2,1]
for number in numbers:
dfj[number] = df['First_column_value_name'].xs(key=number, level='Second_multiindex_column_name')
list_of_columns_position = []
for number in numbers:
R_string = '{}_R'.format(number)
list_of_columns_position.append(R_string)
df_positions_as_columns = pd.concat(dfj.values(), ignore_index=真, 轴=1) df_positions_as_columns.columns = list_of_columns_position
将你的第一列分成两部分,然后将结果与第二列连接起来,最后旋转你的数据框:
设置:
data = {'A': ['TLM_1/100', 'TLM_1/50', 'TLM_1/20',
'TLM_2/100', 'TLM_2/50', 'TLM_2/20'],
'B': [11, 12, 13, 21, 22, 23]}
df = pd.DataFrame(data)
print(df)
# Output:
A B
0 TLM_1/100 11
1 TLM_1/50 12
2 TLM_1/20 13
3 TLM_2/100 21
4 TLM_2/50 22
5 TLM_2/20 23
>>> df[['B']].join(df['A'].str.split('/', expand=True)) \
.pivot(index=0, columns=1, values='B') \
.rename_axis(index=None, columns=None) \
.add_suffix('_R')
100_R 20_R 50_R
TLM_1 11 13 12
TLM_2 21 23 22
使用正则表达式将标签列拆分为两列 a 和 b,然后按列 a 分组并取消分组。