我有一个类似于下面的 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]
})
我想使用特定的 Value1
从 Value2
和 Date
列中提取值,而不将 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
列将始终具有唯一值。
答案 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)