首页 > 解决方案 > 如何根据预先定义的行和列值从 DataFrame 中获取值

问题描述

我在python中有两个DataFrame,我试图df根据日期和列名返回值,真正的DataFrame很长,所以必须使用某种循环来完成

df = pd.DataFrame({
    'Avg1': [1, 2, 3, 4],
    'Avg2': [3, 5, 1, 15],
    'Date': ['2021-08-06', '2021-08-07', '2021-08-08', '2021-08-07']
})
平均1 平均2 日期
0 1 3 2021-08-06
1 2 5 2021-08-07
2 3 1 2021-08-08
3 4 15 2021-08-07
df2 = pd.DataFrame({
    'Return Avg': ['Avg1', 'Avg2'],
    'At Date': ['2021-08-08', '2021-08-07'],
    'Returned values (what I want)': [3, 5]
})
平均回报 日期 返回值(我想要的)
0 平均1 2021-08-08 3
1 平均2 2021-08-07 5

标签: pythonpandasdataframe

解决方案


我认为融化是你要找的。

df = pd.DataFrame({
    'Avg1': [1, 2, 3, 4],
    'Avg2': [3, 5, 1, 15],
    'Date': ['2021-08-06', '2021-08-07', '2021-08-08', '2021-08-07']
})

然后 :

df.melt(id_vars=['Date'], value_vars=['Avg1', 'Avg2'])

         Date variable  value
0  2021-08-06     Avg1      1
1  2021-08-07     Avg1      2
2  2021-08-08     Avg1      3
3  2021-08-07     Avg1      4
4  2021-08-06     Avg2      3
5  2021-08-07     Avg2      5
6  2021-08-08     Avg2      1
7  2021-08-07     Avg2     15

推荐阅读