pandas常用方法以及一些问题总结

本文介绍了在Pandas中处理数据框时,当行名不是索引的情况如何向DataFrame添加新列的两种方法,包括直接转换为pd.Series并确保index匹配,以及先构建DataFrame后通过行名重命名。
摘要由CSDN通过智能技术生成
pandas当行名非索引时添加新列

方法1:简单粗暴的想法,创建好有行名的dataframe,添加新列进去,按如下方法,需要转换成pd.Series,且index匹配。

import pandas as pd
for name in group_name_list:
    if to_cluster is None:
         ...
        to_cluster[name]=pd_corr_data.get_group(name)['pearson']#这样直接添加时不行的,会是nan
        #正确的应该是转换成pd.Series,匹配index=to_cluster.index
        to_cluster[name]=pd.Series(pd_corr_data.get_group(name)['pearson'].tolist(), index=to_cluster.index)

方法2:先构建dataframe,再重命名行名 。(所以为啥当初没用这个方法,好像是担心每个样本计算出的指标内部排列的时候会错位?所以通过名称来对齐避免这样的问题?但话说,上面这个方法避免了吗......)

import pandas as pd

keys = (pd_corr_data.get_group(name)['pearson']).shape[0]
values = list(to_cluster_corr.index)

#,如果这里直接 data.index = values,顺序会打乱,得一一对应

row_name = {key: value for key, value in zip(keys, values)}

for name in group_name_list:
    tmp=[]
    if to_cluster is None:
        ...
        tmp.append(pd_corr_data.get_group(name)['pearson'])
        ...
    data = pd.concat(tmp, axis=1)# 按列连接

    dataFinal = data.rename(index=row_name)

应该是有其他的方法,占个坑,有机会总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值