如何使用pandas转置列的特定行

2024-04-26 21:26:50 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将列与每个特定数量的行进行换位?你知道吗

假设有一列有1000行,我想每100行转置一列。然后我就有十排了。你知道吗

它应该是这样转置的:

  column
1 data1
2 data2
3 data3
4 data4
...
1000 data1000

1 data1 data2 ... data100
2 data11 data12 ... data200
...
10 data901 data902 ... data1000

Tags: 数量columndata1data2data3data4data1000data12
2条回答

可以使用iloc对其进行切片,然后使用默认构造函数

假设你有

df = pd.DataFrame(index=range(1,1001), data={"col": ["data{}".format(i) for i in range(1,1001)]})

     col
1    data1
2    data2
3    data3
4    data4
5    data5
.
.
.
995  data995
996  data996
997  data997
998  data998
999  data999
1000 data1000

那么

>>> vals = [df.iloc[x:x+100].col.tolist() for x in range(0, 1000, 100)]
>>> pd.DataFrame(vals)

    0       1       2       3       4       ... 94      95      96      97      98      99 
0   data1   data2   data3   data4   data5   ... data95  data96  data97  data98  data99  data100
.
.
.
9   data901 data902 data903 data904 data905 ... data995 data996 data997 data998 data999 data1000

用途:

df.reset_index(drop=True,inplace=True)
df['New']=df.index//2# change here to 100 in your data
df['col']=df.New.groupby(df.New).cumcount()
df.pivot('New','col','column')
Out[205]: 
col      0      1
New              
0    data1  data2
1    data3  data4
2    data5  data6

相关问题 更多 >