Pandas 将数据帧列串接为系列索引
问题 如何从该数据框的Pandas 将数据帧列串接为系列索引,pandas,Pandas,问题 如何从该数据框的“聚类平均值”列创建熊猫系列,但使用每月、每周和每日列中的数据作为系列索引 该系列的所需输出是这样的,所有列的字符串串接+df index作为索引,“Cluster Mean”列作为值: 0_[1.0765, 3, monthly]_[1.0755, 2, weekly]_1 1.0760 1_[1.0592, 6, monthly]_[1.058, 12, weekly]_1 1.0586 2_[1.0461, 3, monthly]_[1.0459, 24, wee
“聚类平均值”
列创建熊猫系列,但使用每月
、每周
和每日
列中的数据作为系列索引
该系列的所需输出是这样的,所有列的字符串串接+df index作为索引,“Cluster Mean”列作为值:
0_[1.0765, 3, monthly]_[1.0755, 2, weekly]_1 1.0760
1_[1.0592, 6, monthly]_[1.058, 12, weekly]_1 1.0586
2_[1.0461, 3, monthly]_[1.0459, 24, weekly]_1 1.0460
原始数据帧的屏幕截图:
数据(最小、可重复的示例)
您可以使用apply()
方法和join()
方法:
idx=df.index.astype(str)+'_'+df.apply(lambda x:'_'.join((str(x['monthly']),str(x['weekly']),str(x['daily']))),1)
val=df['Cluster Mean']
result=pd.Series(index=idx,data=val.values.tolist())
注意:在上述代码中,idx变量存储索引值,val变量存储该索引的值
最后使用Series()
方法:
idx=df.index.astype(str)+'_'+df.apply(lambda x:'_'.join((str(x['monthly']),str(x['weekly']),str(x['daily']))),1)
val=df['Cluster Mean']
result=pd.Series(index=idx,data=val.values.tolist())
现在,如果您打印结果
,您将获得所需的输出(系列):
您可以使用apply()
方法和join()
方法:
idx=df.index.astype(str)+'_'+df.apply(lambda x:'_'.join((str(x['monthly']),str(x['weekly']),str(x['daily']))),1)
val=df['Cluster Mean']
result=pd.Series(index=idx,data=val.values.tolist())
注意:在上述代码中,idx变量存储索引值,val变量存储该索引的值
最后使用Series()
方法:
idx=df.index.astype(str)+'_'+df.apply(lambda x:'_'.join((str(x['monthly']),str(x['weekly']),str(x['daily']))),1)
val=df['Cluster Mean']
result=pd.Series(index=idx,data=val.values.tolist())
现在,如果您打印结果
,您将获得所需的输出(系列):
如果axis为
1
,则可以使用row.name
直接访问中的行索引
在联接行值之后,可以使用从系列创建新的数据帧
def join_行(行):
cols=[row.name]+row[['monthly'、'weekly'、'daily']]].values.tolist()
返回'.'.join(映射(str,cols))
结果=pd.concat([df.apply(连接行,轴=1),df['聚类平均值'],轴=1)
如果axis为
1
,则可以使用row.name
直接访问中的行索引
在联接行值之后,可以使用从系列创建新的数据帧
def join_行(行):
cols=[row.name]+row[['monthly'、'weekly'、'daily']]].values.tolist()
返回'.'.join(映射(str,cols))
结果=pd.concat([df.apply(连接行,轴=1),df['聚类平均值'],轴=1)