我有一个pd df,我想通过匹配列名来选择其中一列。
例如,如果我有一个名为“ division = 2”的定义值。我想使用它从下表中选择相关列。在这种情况下,我想获取列df.iloc [:, 2]。
我该怎么做?
division=2
Year 1 2 3 4
0 2024 1.007351 1.098082 1.033620 0.938746
1 2025 1.023808 1.117399 1.036366 0.936205
2 2026 1.036785 1.133247 1.040184 0.934735
答案 0 :(得分:2)
您非常近!见下文。您可以使用division
变量代替列名(在这种情况下为定位符)。
请注意:
请务必注意,列名称和定位符之间的差异。 OP要求输入列名,但在问题中使用了定位符(df.iloc
)。
定位器:
.iloc[:, 2]
将返回第三列中的所有行(编号从0开始)。由于通过dict
创建此DataFrame的情况可能会有所不同,而不保留订单。
列名:
df[2]
或df.loc[:, 2]
将返回列名为2 的所有行。
import pandas as pd
division = 2
data = {'Year': [2024, 2025, 2026],
1: [1.007351, 1.023808, 1.036785],
2: [1.098082, 1.117399, 1.133247],
3: [1.033620, 1.036366, 1.040184],
4: [0.938746, 0.936206, 0.934735]}
df = pd.DataFrame(data)
# Display DataFrame
print(df)
# 1) Display the output of column named 2.
print(df[division])
# 2) Display the output of column 2.
print(df.iloc[:, division])
DataFrame内容:
1 2 3 4 Year
0 1.007351 1.098082 1.033620 0.938746 2024
1 1.023808 1.117399 1.036366 0.936206 2025
2 1.036785 1.133247 1.040184 0.934735 2026
1)列名称的输出:
print(df[division])
0 1.098082
1 1.117399
2 1.133247
Name: 2, dtype: float64
2)列定位器的输出:
print(df.iloc[:, division])
0 1.033620
1 1.036366
2 1.040184
Name: 3, dtype: float64