根据来自另一个数据框列的值选择列值

时间:2021-04-05 13:05:29

标签: python pandas dataframe

我有一个类似于下面的 pandas dataframe

  |   Date  | Value1 | Value2
0 | 2021-01 | 10.90  | 2.34
1 | 2021-02 | 12.85  | 4.65
2 | 2021-03 | 15.56  | 6.11
3 | 2021-04 | 18.23  | 8.62

创建数据框的示例代码:

import pandas as pd

df = pd.DataFrame({
    "Date": ['2021-01', '2021-02', '2021-03', '2021-04'],
    "Value1": [10.90, 12.85, 15.56, 18.23],
    "Value2": [2.34, 4.65, 6.11, 8.62]
})

我想使用特定的 Value1Value2Date 列中提取值,而不将 Date 作为 dataframe 的索引。

我所做的一切都很好,但正在寻找更好的方法。

单行代码将非常感谢这项任务。

我的方法:

value1_2021_01 = df[df["Date"] == '2021-01'][['Value1']].iat[0,0]

value2_2021_04 = df[df["Date"] == '2021-04'][['Value2']].iat[0,0]

请注意,Date 列将始终具有唯一值。

2 个答案:

答案 0 :(得分:1)

试试:

value1_2021_01 = df.loc[list(df["Date"]).index("2021-01"), "Value1"]
values = df.loc[list(df["Date"]).index("2021-01"), ["Value1", "Value2"]]  # for both values

在我的机器上,它需要 1/50 的执行时间 value1_2021_01 = df[df["Date"] == '2021-01'][['Value1']].iat[0,0 ].

答案 1 :(得分:1)

我没有正确回答问题,但您是否想要这样的问题:

g = lambda x: df.query(f'Date=="{x}"')[['Value1', 'Value2']]
value1,value2 = g('2021-01').values[0]

print(value1, value2)

输出:

(10.9, 2.34)
相关问题