![](/img/trans.png)
[英]Extract text after period “.” from values in a column in Pandas Dataframes
[英]Pandas: extract index and column after processing values
我有一个类似于此的DF1
:
A B
X BLA, FOO XY, ZY, DW
Y BAR, BLA FOO, DW
Z UVH, DD RATM,QOTA
DF的每个元素都是一个具有以下结构的字符串: BLA, FOO, BAR, ...
我想将其重塑为基于单个元素的DF2
,将其转换为X
和A
的关联:
A B
BLA X, Y
FOO X Y
XY X
...
如您所见, DF1
每个元素都显示索引和列之间的关联。 有没有比逐行和逐列读取更实用的方法呢? 或者,如何从pd.DF.applymap()
获得index
和column
?
提前致谢
采用:
split
DataFrame
和按stack
Series stack
系列的形状-所有拆分值都在一列中 reset_index
将MultiIndex
转换为列 MultiIndex
,汇总join
了副本 unstack
重塑 rename_axis
列和索引名称 df1 = (df.apply(lambda x: x.str.split(',\s+', expand=True).stack())
.stack()
.reset_index(drop=True, level=1)
.reset_index(name='val')
.groupby(['val','level_1'])['level_0']
.apply(', '.join)
.unstack(fill_value='')
.rename_axis(None)
.rename_axis(None, 1))
谢谢, 零为类似的解决方案:
df1 = (df.stack()
.str.split(', ', expand=True)
.stack()
.reset_index(name='val')
.groupby(['val','level_1'])['level_0']
.apply(', '.join)
.unstack(fill_value='')
.rename_axis(None)
.rename_axis(None, 1))
print (df)
A B
BAR Y
BLA X, Y
DD Z
DW X, Y
FOO X Y
QOTA Z
RATM Z
UVH Z
XY X
ZY X
df1 = (df.stack()
.str.split(', ', expand=True)
.stack()
.reset_index()
.pivot_table(index=0,
columns='level_1',
values='level_0',
aggfunc=','.join,
fill_value='')
.rename_axis(None)
.rename_axis(None, 1))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.