python - 将包含类别的列与包含整数的列合并
问题描述
我想在这个对角相关矩阵中创建列之间的相关数据。
我的数据目前是这种格式:
我需要将其转换为这种格式:
这怎么可能,将 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'>
解决方案
假设您的原始数据框称为 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)
原始数据框:
转换后的数据框:
推荐阅读
- java - 尽管使用正确的输出编写了正确的代码,但仍获得 WA
- curl - curl:(6)无法解析主机:在 WSL 上
- linux - RPM post scriptlets 权限被 docker 命令拒绝
- azure-devops - 用于创建管道的 Azure Devops REST API 与源提供程序 bitbucket 不工作
- java - 提取名称,用双引号括起来从字符串到列表
- javascript - 特定用户的前端切换功能标志
- c# - 无法创建“AppDbContext”类型的对象
- javascript - Python socket.io ack 函数
- javascript - 如何将多个 then() 承诺合二为一
- java - java - 如何在java中执行多个Future并在for循环之前等待它完成?