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)
应该是有其他的方法,占个坑,有机会总结