我有一个包含 29 列和 1692 行的 .csv 文件。
列D_INT_1
和D_INT_2
只是日期。
我想检查这两列之间是否有日期: >= "2022-03-01" and <= "2024-12-31
。
而且,如果找到一个值,我想显示找到的日期+列 "NAME"
的值位于所述找到值的同一行。
这就是我现在所做的,但它只获取日期而不是相邻值 ('NAME')
.
# importing module
import pandas as pd
# reading CV file
df = pd.read_csv("scratch_2.csv")
# converting column data to list
D_INT_1 = df['D_INT_1'].tolist()
D_INT_2 = df['D_INT_2'].tolist()
ext = []
ext = [i for i in D_INT_1 + D_INT_2 if i >= "2022-03-01" and i <= "2024-12-31"]
print(*ext, sep="\n")
这就是我想要得到的:
DF 示例:
NAME, ADDRESS, D_INT_1, D_INT_2
Mark, H4N1V8, 2023-01-02, 2019,-01-01
预期输出:
MARK, 2023-01-02
最佳答案
很多时候,紧凑的[for in]
语法可以有效地用于简单的代码,但在这种情况下我不推荐它。我建议你使用普通的for
。这是一个例子:
# importing module
import pandas as pd
# reading CV file
df = pd.read_csv("scratch_2.csv")
# converting column data to list
D_INT_1 = df['D_INT_1'].tolist()
D_INT_2 = df['D_INT_2'].tolist()
NAMES = df['NAME'].tolist()
# loop for every row in the data
# (i will start as 0 and increase by 1 every iteration)
for i in range(0, len(D_INT_1)):
if D_INT_1[i] >= "2022-03-01" and D_INT_1[i] <= "2024-12-31":
print(NAME[i], D_INT_1[i])
if D_INT_2[i] >= "2022-03-01" and D_INT_2[i] <= "2024-12-31":
print(NAME[i], D_INT_2[i])
关于python - 当使用列表找到某个值时,从行中提取多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69899647/