Python 从行和列索引创建数据帧
由于我之前的问题没有得到回答,我将更简单地再试一次 我有一个程序,它生成一个包含行和列索引的列表:Python 从行和列索引创建数据帧,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,由于我之前的问题没有得到回答,我将更简单地再试一次 我有一个程序,它生成一个包含行和列索引的列表: a = [0, 0, 1, 1] # row b = [0, 1, 0, 1] # column 也可以将其格式化为列表的列表: a = [[0,0], [0,1], [1,0], [1,1]] 数据帧: Name 2544 2543 2542 0 DR01 13 16 23 1 DR02 15 27 12 2 DR
a = [0, 0, 1, 1] # row
b = [0, 1, 0, 1] # column
也可以将其格式化为列表的列表:
a = [[0,0], [0,1], [1,0], [1,1]]
数据帧:
Name 2544 2543 2542
0 DR01 13 16 23
1 DR02 15 27 12
2 DR03 16 18 13
3 DR04 17 92 56
目标是根据列表中的索引从提到的数据框中获取值,并创建一个新的数据框。我尝试了一个for循环,但没有成功,速度非常慢
它应该是什么样子的:
Name 2544
0 DR01 13
1 DR02 15
更新:
以下是我尝试过的:
In[96]: df = importDialog.df.iloc[a,b]
In[96]: print(df)
Out[96]:
Name 2544 Name 2544
0 DR01 13 DR01 13
1 DR02 15 DR02 15
另外,当我尝试在表中显示完整的数据集时:
MemoryError: Unable to allocate 9.06 GiB for an array with shape (34749, 34992) and data type object
假设您已检查
a,b
构成矩形:
a = [0, 0, 1, 1] # row
b = [0, 1, 0, 1] # column
df.iloc[sorted(set(a)),sorted(set(b))]
输出:
Name 2544
0 DR01 13
1 DR02 15
你能发布你尝试过的内容和输出结果吗?索引总是创建一个矩形吗?@GlenvillePecor Done@QuangHoang我计划添加一个条件,如果形状不是矩形,则会引发异常。你能帮我个忙吗?你的六对a是如何产生2x2数据帧的?非常感谢,这让我头疼了将近两天。还有两件事,如果形状不是矩形,有没有办法做到这一点?我如何检查形状是否为矩形?
len(a)==len(set(a))*len(set(b))
这很有意义。再次感谢。我会投票支持你的答案,但是我没有足够的代表。另外,你需要检查a,b
是否有相同的长度,这可能不是你的错误消息中的情况。