首页 > 解决方案 > 将包含类别的列与包含整数的列合并

问题描述

我想在这个对角相关矩阵中创建列之间的相关数据。

我的数据目前是这种格式:

在此处输入图像描述

我需要将其转换为这种格式:

在此处输入图像描述

这怎么可能,将 T 和 G 中的类别合并到 Sample 列中?

谢谢你的帮助!

编辑:

print(df.dtypes)输出:

T
int64
Group
object
Sample1
float64
Sample2
int64
Sample3
float64
dtype: object

print(df.index)输出:

Int64Index([0, 1, 3, 6, 16, 18, 19, ..., 52], dtype='int64')

print(type(df))输出:

<class 'pandas.core.frame.DataFrame'>

标签: pythonpandasdataframe

解决方案


假设您的原始数据框称为 df 并且您的列是 T、G 和 Sample*,以下代码会准备一个具有所需格式的新数据框:

list_T = list(df['T'].unique())
list_G = list(df['G'].unique())
list_Samples = list(df.drop(['T', 'G'], axis = 1).columns)

cols = []
data = []
for s in list_Samples:
    for g in list_G:
        for t in list_T:
            cols.append(s + ' T' + str(t) + ' ' + g)
            data.append(list(df[s][(df['T'] == t) & (df['G'] == g)]))

df2 = pd.DataFrame(data = np.array(data).T, columns = cols)

原始数据框:

在此处输入图像描述

转换后的数据框:

在此处输入图像描述


推荐阅读