2

您将如何在下面的 pandas DataFrame 中创建一个列,其中新列是每个“Mod_ID_x”的“val”的扩展均值/中位数。想象一下,如果是时间序列数据,“ID”1-2 在第 1 天,“ID”3-4 在第 2 天。

我已经尝试了所有我能想到的方法,但似乎无法做到正确。

left4 = pd.DataFrame({'ID': [1,2,3,4],'val': [10000, 25000, 20000, 40000],
'Mod_ID': [15, 35, 15, 42],'car': ['ford','honda', 'ford', 'lexus']})    


right4 = pd.DataFrame({'ID': [3,1,2,4],'color': ['red', 'green', 'blue', 'grey'], 'wheel': ['4wheel','4wheel', '2wheel', '2wheel'], 
                      'Mod_ID': [15, 15, 35, 42]})

df1 = pd.merge(left4, right4, on='ID').drop('Mod_ID_y', axis=1)

熊猫数据框

4

1 回答 1

2

很难在你的 DataFrame 上正确测试,但你可以使用这样的东西:

>>> df1["exp_mean"] = df1[["Mod_ID_x","val"]].groupby("Mod_ID_x").transform(pd.expanding_mean)
>>> df1
   ID  Mod_ID_x    car    val  color   wheel  exp_mean
0   1        15   ford  10000  green  4wheel     10000
1   2        35  honda  25000   blue  2wheel     25000
2   3        15   ford  20000    red  4wheel     15000
3   4        42  lexus  40000   grey  2wheel     40000
于 2013-10-27T07:57:53.943 回答