有没有一种方法可以融化一个数据框,使值列根据数据类型分别创建?(使用python)

2024-03-29 00:14:52 发布

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

我有一个数据帧,其中有数百列,以表示成一个理想的格式,我应用,这是不令人满意的。melt函数创建一个value列,并附加指定给“value\u vars”参数的列的所有值,而不考虑数据类型。 我正在尝试是否可以根据数据类型获得单独的值列。你知道吗

我拥有的数据帧:

时间地点温度值1压力值2

2018年2月4日英国A 3 C 2

2018年3月4日英国C 4 D 6

2018年4月4日英国B 6 A 1

2018年5月4日英国D 8 A 4

预期产量:

时间地点参数源值

2/4/18英国温度A 3

3/4/18英国温度C 4

4/4/18英国温度B 6

5/4/18英国温度D 8

2/4/18英国压力C2

3/4/18英国压力D6

4/4/18英国压力A1

5/4/18英国压力A4

提前谢谢。你知道吗


Tags: 数据函数参数value格式时间vars温度
1条回答
网友
1楼 · 发布于 2024-03-29 00:14:52

使用^{}按类型获取列,按stack重塑形状,按concat联接:

df = df.reset_index(drop=True)

df1 = df.set_index(['time','place'], append=True)
a = df1.select_dtypes(object).stack().rename('source').reset_index(level=3)
b = df1.select_dtypes(np.number).stack().rename('value').reset_index(level=3, drop=True)
df2 = (pd.concat([a, b], axis=1)
         .reset_index(level=[1,2])
         .rename(columns={'level_3':'parameter'})
         .sort_values(['place','parameter'])
         .reset_index(drop=True)
         )

print (df2)
       time place    parameter source  value
0  2/4/2018   U.K     Pressure      C      2
1  3/4/2018   U.K     Pressure      D      6
2  4/4/2018   U.K     Pressure      A      1
3  5/4/2018   U.K     Pressure      A      4
4  2/4/2018   U.K  Temperature      A      3
5  3/4/2018   U.K  Temperature      C      4
6  4/4/2018   U.K  Temperature      B      6
7  5/4/2018   U.K  Temperature      D      8

前2列之后选择对和取消对列的另一种解决方案:

df = df.reset_index(drop=True)

df1 = df.set_index(['time','place'], append=True)
a = df1.iloc[:, ::2].stack().rename('source').reset_index(level=3)
b = df1.iloc[:, 1::2].stack().rename('value').reset_index(level=3, drop=True)

df2 = (pd.concat([a, b], axis=1)
         .reset_index(level=[1,2])
         .rename(columns={'level_3':'parameter'})
         .sort_values(['place','parameter'])
         .reset_index(drop=True)
         )

print (df2)
       time place    parameter source  value
0  2/4/2018   U.K     Pressure      C      2
1  3/4/2018   U.K     Pressure      D      6
2  4/4/2018   U.K     Pressure      A      1
3  5/4/2018   U.K     Pressure      A      4
4  2/4/2018   U.K  Temperature      A      3
5  3/4/2018   U.K  Temperature      C      4
6  4/4/2018   U.K  Temperature      B      6
7  5/4/2018   U.K  Temperature      D      8

相关问题 更多 >