python - 当使用列表找到某个值时,从行中提取多个值

标签 python pandas date

我有一个包含 29 列和 1692 行的 .csv 文件。 列D_INT_1D_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/

相关文章:

python - 我如何在表达式中使用 Perl 的 s///?

python - 这些类型的 python 装饰器是如何编写的?

python - Series 的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

mysql - 使用 MySQL 将 int 值从 MMDDYYY 重新排列为 YYYYMMDD

ios - 手动设置日期以使日期选择器始终返回一个日期

python - 如果 zeep 中的强制 wsdl 字段为空,如何删除该字段

python - 如何为 Pandas DataFrame 指定输入数据类型

python - 使用包含列表 Python 的字典过滤 DataFrame 的 2 列

python - 在 pandas 数据帧上链接方法时,列引用语法看似不一致

function - 将谷歌表中的日期区域设置从公历转换为 Jalali 日历