请问如何用pandas实现如图的行列转置?

标题

 

提取行到新建列。

新建6个字符串将数据储存,再写入

建议可以参考一下python的pandas库的DataFrame方法的转置函数,链接地址:https://www.cnblogs.com/niulang/p/11820529.html

import numpy as np

import pandas as pd

 

# 生成数据

col1 = np.tile(np.array([1,2,3,4,5,6]), 4)

col2 = np.arange(24)

df = pd.DataFrame([l2, l10]).T
df.columns=['日期', '数据']

# 转换数据

row_num = 6

col_num = df.shape[0] / row_num

df_col1_values = df.iloc[:, 0].values

df_col2_values = df.iloc[:, 1].values

arr = df_col2_values.reshape(col_num, row_num).T

df2 = pd.DataFrame(arr)

df2.columns=['日期', '数据', '', '']

df2 

 

转换完毕

 

新建一个,然后处理的时候index和column交换

import numpy as np
import pandas as pd
df = pd.DataFrame({'日期':np.tile(np.array([1,2,3,4,5,6]), 4), '数据':np.arange(1,25)/10})
df2 = pd.DataFrame(np.insert(df.iloc[:, 1].values.reshape(int(df.shape[0] / row_num), len(
    df['日期'].unique())).T, 0, values=df['日期'].unique(), axis=1), columns=['日期', '数据', '', '', ''])
df2

import numpy as np
import pandas as pd
df = pd.DataFrame(
    {'日期': np.tile(np.array([1, 2, 3, 4, 5, 6]), 4), '数据': np.arange(1, 25)/10})
df2 = pd.DataFrame(np.insert(df.iloc[:, 1].values.reshape(int(df.shape[0] / len(df['日期'].unique())), len(
    df['日期'].unique())).T, 0, values=df['日期'].unique(), axis=1), columns=['日期', '数据', '', '', ''])
df2

用第二个就能满足你的要求。

 

import numpy as np
import pandas as pd
columns_date = '日期'
columns_values = '数据'
df = pd.DataFrame(
    {columns_date: np.tile(np.array([1, 2, 3, 4, 5, 6]), 4), columns_values: np.arange(1, 25)/10})
df2 = pd.DataFrame(np.insert(df.iloc[:, 1].values.reshape(int(df.shape[0] / len(df[columns_date].unique())), len(
    df[columns_date].unique())).T, 0, values=df[columns_date].unique(), axis=1), columns=[columns_date, columns_values]+['' for i in range(int(df.shape[0] / len(df[columns_date].unique()))-1)])
df2