基于索引前缀在列中设置值的最有效方法

2024-06-13 06:29:06 发布

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

我有这样一个数据帧:

df = pd.DataFrame(index=['pre1_xyz', 'pre1_foo', 'pre3_bar', 'pre3_foo', 'pre10_foo', 'pre10_bar', 'pre10_xyz'])

我想添加一个列values,其中的值是根据使用函数return_something(pref)的相应行的索引前缀来确定的。现在我实现如下:

^{pr2}$

然后得到期望的输出:

           values
pre1_xyz        0
pre1_foo        0
pre3_bar        7
pre3_foo        7
pre10_foo      13
pre10_bar      13
pre10_xyz      13

问题是是否有比这更聪明的解决方案,例如避免创建unique_pref和/或{}和/或使用{a1},这似乎是向数据帧添加值的最快解决方案,如this question所述。在


Tags: 数据函数dataframedfindexfoobar解决方案
1条回答
网友
1楼 · 发布于 2024-06-13 06:29:06

因为前缀有重复,所以需要首先分离出前缀,以确保不会为同一前缀生成新的随机数。因此,必须从前缀列表中删除重复项。我以一种更简洁的方式完成了这项工作,为前缀创建了一个新列,然后使用df.prefix.unique(). 在

df['prefix'] = [i.split('_')[0] for i in df.index]
df['values'] = df.prefix.map(dict(zip(df.prefix.unique(),[return_something(i) for i in df.prefix.unique()])))

相关问题 更多 >