Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按组将列转换为行_Python_Python 3.x_Pandas_Pandas Groupby - Fatal编程技术网

Python 按组将列转换为行

Python 按组将列转换为行,python,python-3.x,pandas,pandas-groupby,Python,Python 3.x,Pandas,Pandas Groupby,我有一个这样的数据框 Chennai 6200SqFT 10,000 Population Mumbai 5000sqFT 17,000 Population Chennai 6200SqFT 10,000 Population Mumbai 5000SqFT 17,000 Population 我想这样转化 Chennai 6200SqFT 10,000 Population Mumbai 5000sqFT 17,000 Population Chennai

我有一个这样的数据框

Chennai
6200SqFT
10,000 Population
Mumbai
5000sqFT
17,000 Population
Chennai    6200SqFT    10,000 Population
Mumbai     5000SqFT    17,000 Population
我想这样转化

Chennai
6200SqFT
10,000 Population
Mumbai
5000sqFT
17,000 Population
Chennai    6200SqFT    10,000 Population
Mumbai     5000SqFT    17,000 Population

IIUC,您可以使用以下方法:

假设您的数据帧如下所示:

print(df)
                   0
0            Chennai
1           6200SqFT
2  10,000 Population
3             Mumbai
4           5000sqFT
5  17,000 Population

解决


输出:

         0         1                  2
0  Chennai  6200SqFT  10,000 Population
1   Mumbai  5000sqFT  17,000 Population
如果您的线条不均匀(不是3的倍数,请尝试):

试试下面的代码

df_new = pd.DataFrame(df.values.reshape(-1,3), columns=['town', 'area', 'population'])
df_new.show()
输出

    town     area           population
0   Chennai 6200SqFT    10,000 Population
1   Mumbai  5000sqFT    17,000 Population

试试这个,就像有人在前面的评论中提到的使用切片一样

>a,b,c=df[::3]。值。重塑(-1),df[1::3]。值。重塑(-1),df[2::3]。值。重塑(-1)
>>>数据帧({'a':a,'b':b,'c':c},索引=范围(len(a)))
a、b、c
0钦奈6200平方英尺10000人口
1孟买5000平方英尺17000人口
输出=pd.concat([g.reset\u索引(drop=True)) 对于df.groupby(df.index//3)]中的g,轴=1)。T.reset_索引(drop=True)


anky_91发布

你尝试过什么?请提供一个逻辑,我想申请循环。但是没有得到正确的流程,我的整个数据都在一列中。我要三个牢房,三个牢房,等等去三排的汉克做回应。请分享代码,如果有的话。Pls@BALAJIR解决了吗?返回self.\u engine.get.\u loc(self.\u可能\u cast\u indexer(key))@BALAJIR将0替换为原始列名,因此尝试
pd.DataFrame(df['original\u column\u name'].to\u numpy().重塑(-1,3))
这个逻辑对我很有用。非常感谢。output=pd.concat([g.reset_index(drop=True)for g in df.groupby(df.index//3)],axis=1.T.reset_index(drop=True)@BALAJIR很高兴它帮助了你,如果它起作用,你能回答这个问题吗,谢谢你的值错误:无法将大小为2771的数组重塑为形状(3)我认为你遗漏了一个元素。理想情况下,行计数应该是3的倍数。检查您遗漏了一个元素的位置。在我的原始数据中,我在一列中有2700个字段&我希望它将其重新格式化为9行,每个行的答案都应该有效,但在出现错误时给出了答案…请告诉我您是否对该值有任何问题错误:无法将输入数组从形状(923)广播到形状(924)实际上,我的数据在一列中包含2700个字段。我希望下面的9个字段都转到行。您只需单击答案左侧的勾号即可接受我的答案,而不是回答相同的:)当然。对不起,我不知道程序。我会做的。再次感谢您没有问题,请阅读并