gpt4 book ai didi

python - 将多个测量值合并到 pandas 数据框中

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:55 25 4
gpt4 key购买 nike

我在 *.csv 文件中组织了一些测量结果,如下所示:

m_number,value
0,0.154
1,0.785

55,0.578
NaN,NaN
0,1.214
1,0.742

因此总有一组 x 测量值(x 在单个文件内应该是常量,但不能保证,我必须检查这个数字),并用NaN 行。

将数据读入数据帧后,我想重新组织它以供以后使用:

  m_number    value 1      value 2      value 3      value 4  
0 0 0.154 0.214 0.229 0.234
1 1 0.785 0.742 0.714 0.771
...
55 55 0.578 0.647 0.597 0.623

每组测量值应为一列。

这是代码片段:

split_index = df.index[df_benchmark['id'].isnull()]
df_sliced = pd.DataFrame()
for i, index in enumerate(split_index):
if i == 0:
df_sliced = df.loc[0:index - 1].copy()
else:
#ToDo: Rename first column to 'value 1' if more than 1 measurement
temp = df['value'].loc[0:index - 1].copy()
temp.reset_index(drop=True, inplace=True)
df_sliced['value '+str(i)] = temp
df.drop(df.index[0:index - split_index[i - 1]], inplace=True)

该代码可以工作,但我不喜欢我当前的方法。所以我想问是否有更好、更优雅的解决方案来解决这个问题。

最好,朱兹

最佳答案

您可以使用 cumsumset_indexunstack 来完成此操作,只需三行代码:

#Create dummy data with 4 runs of 10 measures
df = pd.DataFrame({'m_number':np.tile(np.arange(10),4), 'value':np.random.random(40)})

#使用条件查找第一次运行并使用 cumsum 和 unstack 来创建增量
多索引列标题
df_u = df.set_index([df['m_number'].eq(0).cumsum(), df['m_number']])[['value']].unstack()

#Use condition to find first run and increment using cumsum and unstack to create  
#MultiIndex column headers (Corrected per comments below)
df_u = df.set_index([df['m_number'], df['m_number'].eq(0).cumsum()])[['value']].unstack()

#Flatten MultiIndex column headers
df_u.columns = [f'{i}_{j}' for i, j in df_u.columns]

#Display results
df_u

输出:

           value_1   value_2   value_3   value_4
m_number
0 0.919057 0.064409 0.288592 0.742759
1 0.449587 0.867031 0.193493 0.853700
2 0.551929 0.925111 0.895273 0.117306
3 0.487501 0.893696 0.696540 0.381469
4 0.389431 0.818801 0.771516 0.489404
5 0.790619 0.478995 0.023236 0.344112
6 0.015389 0.815073 0.195856 0.628263
7 0.068860 0.483731 0.752803 0.581106
8 0.109404 0.281335 0.330910 0.909965
9 0.695120 0.538676 0.766864 0.247283

关于python - 将多个测量值合并到 pandas 数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56977916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com