[英]how to get tuple index values in data frame in python?
数据框如下。
| ID | FIRST_NAME| LAST_NAME| MOBILE_NUMBER | DIRECT_NUMBER|
| ---|-----------------------------------------------------|
| 1 | Richard | dietzen | +18708007709 | not available |
| 2 | William |macdonald | not available | +15611784776 |
| 3 | Richard | Dietzen | +18708007709 | not available |
| 4 | dale | Sowders | +16162900340 | not available |
| 5 | dale | Sowders | +18708007709 | not available |
数据框索引的元组:
|(1, 3)|
|(4, 5)|
预期的数据框;
| ID_1 | FIRST_NAME_1 |...... | DIRECT_NUMBER_1| ID_2 | FIRST_NAME_2|......| DIRECT_NUMBER_2|
| --- |------------------------------------------------------------------------------------|
| 1 | richard | ......| not available | 3 | richard |......| not available |
| 4 | dale | ......| not available | 5 | dale |......| not available |
输出应该是像上面的数据框一样的数据框,它应该在数据框的同一行中有索引元组
首先通过列表理解创建 3 个级别的MultiIndex.from_tuples
:
tups = [(1,3),(4,5),(3,4)]
#if necessary set ID to index
df = df.set_index('ID')
L = [(a,i+1, x) for a, b in enumerate(tups) for i, x in enumerate(b) ]
mux = pd.MultiIndex.from_tuples(L)
然后使用DataFrame.reindex
将最后一个级别转换为列ID
并通过DataFrame.sort_index
重塑,通过DataFrame.unstack
排序级别,最后展平MultiIndex
:
df = (df.reindex(mux, level=2)
.reset_index(level=-1)
.rename(columns={'level_2':'ID'})
.unstack()
.sort_index(axis=1, level=1, sort_remaining=False))
df.columns = df.columns.map(lambda x: f'{x[0]}_{x[1]}')
print (df)
ID_1 FIRST_NAME_1 LAST_NAME_1 MOBILE_NUMBER_1 DIRECT_NUMBER_1 ID_2 \
0 1 Richard dietzen +18708007709 not available 3
1 4 dale Sowders +16162900340 not available 5
2 3 Richard Dietzen +18708007709 not available 4
FIRST_NAME_2 LAST_NAME_2 MOBILE_NUMBER_2 DIRECT_NUMBER_2
0 Richard Dietzen +18708007709 not available
1 dale Sowders +18708007709 not available
2 dale Sowders +16162900340 not available
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.