如何为下面的Pandas数据框的多列拆分字符串以列出每一列?
col1 col2
0/1:9,12:21:99 0/1:9,12:22:99
0/1:9,12:23:99 0/1:9,15:24:99
所需的输出:
col1 col2
[0/1,[9,12],21,99] [0/1,[9,12],22,99]
[0/1,[9,12],23,99] [0/1,[9,15],24,99]
我可以做到:
df['col1'].str.split(":", n = -1, expand = True)
df['col2'].str.split(":", n = -1, expand = True)
但是我有很多专栏,我想知道是否可以以一种更自动化的方式来做到这一点?
然后,我想为每一行计算每个列表的第二个元素的平均值,即第一行的平均值为21和22,第二行的平均值为23和24。
答案 0 :(得分:1)
如果数据像您的样本一样,则可以使用stack
:
new_df = (df.iloc[:,0:2]
.stack()
.str.split(':',expand=True)
)
然后new_df
被双索引:
0 1 2 3
0 col1 0/1 9,12 21 99
col2 0/1 9,12 22 99
1 col1 0/1 9,12 23 99
col2 0/1 9,15 24 99
并说出您是否想要第二个数字的均值:
new_df[2].unstack(level=-1).astype(float).mean(axis=1)
给予:
0 21.5
1 23.5
dtype: float64