在pandas中使用一个数据帧作为另一个数据帧的索引

2024-05-19 18:49:01 发布

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

仍然在尝试如何使用Python中的pandas形式的多个数据帧执行操作。在

我有以下三个数据帧(d1d2,和d3): enter image description here

对于user_id中的每个用户,我需要使用df2列中的值作为df3中“周”的索引,并将它们乘以df1中的相应值。在

例如:用户163,列measurements的值为0.0(来自df2)。第0.0周的df3中的查找是2。要为此用户/列计算的最终值是2(从df1)乘以2=4。在

我需要估计所有用户在user_id和所有列(activity,nutrition,etc.)

有什么想法吗?在

我一直在玩。申请,但我发现很难正确地组织问题。在


Tags: 数据用户idpandasactivity形式d2d1
1条回答
网友
1楼 · 发布于 2024-05-19 18:49:01

我认为,关键是把所有这些数据放在一起。您可以通过迭代和来回来单独使用它,但是使用Pandas merge功能要容易得多,而且非常健壮,如下所示:

import pandas as pd

data1 = {'user_id':[163], 'measurements':[2.0]}
data2 = {'user_id':[163], 'measurements':[0.0]}
data3 = {'weeks':[0.0], 'measurements':[2.0]}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df3 = pd.DataFrame(data3)

df = df1.merge(df2, on='user_id', how='outer', suffixes=['_df1', '_df2'])
df = df.merge(df3, left_on='measurements_df2', right_on='weeks',
              how='outer', suffixes=['', '_df3'])
df['new_val'] = df['measurements_df1'] * df['measurements']

In [13]: df
Out[13]:
   measurements_df1  user_id  measurements_df2  measurements  weeks  new_val
0               2.0      163               0.0           2.0    0.0      4.0

将来,如果你给我们一个可重复使用的例子,这会更容易,特别是如果你可以在你尝试的内容中包含错误,但在这个例子中,我知道你的意思是很难弄清楚如何正确地组织问题。我强烈建议你,韦斯·麦金尼。在

相关问题 更多 >