这是我的数据框信息:
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 4 columns):
A_mean 6 non-null float64
time_range 6 non-null object
time_range_1 6 non-null object
B 6 non-null object
dtypes: float64(1), object(3)
这是df:
df
index A_mean time_range time_range_1 B
0 5.936667 07 08:00 - 08:59 1001
1 5.103241 08 08:00 - 08:59 1001
2 5.267687 09 09:00 - 09:59 1001
我试图将这两行结合起来:
index A_mean time_range time_range_1 B
0 5.936667 07 08:00 - 08:59 1001
1 5.103241 08 08:00 - 08:59 1001
在一行中,所需的输出应如下所示:
index A_mean time_range time_range_1 B
0 5.519954 08 08:00 - 08:59 1001
** P / S:最重要的专栏是A_mean&amp; time_range_1和B列应该保持不变。
我试过.groupby,但我有错误:
df2 = df.groupby('time_range_1')['A_mean'].apply(' '.join).reset_index()
TypeError: sequence item 0: expected str instance, numpy.float64 found
任何解决方案都会以“pythonic”方式(pandas)欣赏。非常感谢你!
答案 0 :(得分:1)
您可以使用:
df.groupby(['time_range_1', 'B'], as_index=False).agg({'A_mean': 'mean', 'time_range':'last'})
结果:
time_range_1 B A_mean time_range
0 08:00 - 08:59 1001 5.519954 8
1 09:00 - 09:59 1001 5.267687 9
答案 1 :(得分:0)
尝试另一种方式来解决但不是在1个代码中:
df2= df.groupby(df.time_range_1).mean().reset_index()
df2['B'] = '1001'
Output:
index time_range_1 A_mean B
0 08:00 - 08:59 5.519954 1001
1 09:00 - 09:59 5.267687 1001