合并包含类别的列和包含整数的列

时间:2019-02-12 16:46:47

标签: python pandas dataframe

我想在列like in this diagonal correlation matrix之间创建关联数据。

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

enter image description here

我需要将其转换为以下格式:

enter image description here

如何将T和G中的类别合并到“样本”列中?

感谢您的帮助!

编辑:

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'>

2 个答案:

答案 0 :(得分:1)

假设原始数据帧称为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)

原始数据框:

enter image description here

已转换的数据框:

enter image description here

答案 1 :(得分:0)

放置数据链接会更容易。我不想开您的数据。请尝试使用PANDAS-Crosstab。