我有一个CSV文件(两个不同的样本)
from io import StringIO
import pandas as pd
dfa = pd.read_csv(StringIO("""
Date/Time ID C_1 C_2 C_3 C_4 C_5 C_6 C_7 C_8 C_9 C_10
"18/06/2023 3:51:53" 136 101 2028 61 4 3 18 0 0 2 2
"18/06/2023 3:51:54" 24 101 2029 65 0 0 0 1 1 NA 1
"18/06/2023 3:51:55" 16 101 2022 89 0 0 0 0 0 NA 7
"18/06/2023 3:51:56" 136 101 2024 90 0 0 0 0 0 NA 3
"18/06/2023 3:51:57" 24 101 2026 87 0 1 8 0 0 9 2
"18/06/2023 3:51:58" 136 101 2023 33 0 1 87 0 0 2 2"""), sep="\s+")
dfb = pd.read_csv(StringIO("""
Date/Time ID C_1 C_2 C_3 C_4 C_5 C_6 C_7 C_8 C_9 C_10
"18/06/2023 3:51:53" 24 101 2029 65 0 0 0 1 1 NA 1
"18/06/2023 3:51:54" 136 101 2028 61 4 3 18 0 0 2 2
"18/06/2023 3:51:55" 16 101 2022 89 0 0 0 0 0 NA 7
"18/06/2023 3:51:56" 136 101 2024 90 0 0 0 0 0 NA 3
"18/06/2023 3:51:57" 136 101 2023 33 0 1 87 0 0 2 2
"18/06/2023 3:51:58" 24 101 2026 87 0 1 8 0 0 9 2"""), sep="\s+")
dfc = pd.read_csv(StringIO("""
Date/Time ID C_1 C_2 C_3 C_4 C_5 C_6 C_7 C_8 C_9 C_10
"18/06/2023 3:51:53" 136 101 2028 61 4 3 18 0 0 2 2
"18/06/2023 3:51:54" 24 101 2029 65 0 0 0 1 1 NA 1
"18/06/2023 3:51:54" 136 102 2045 61 2 3 4 5 6 7 8
"18/06/2023 3:51:55" 16 101 2022 89 0 0 0 0 0 NA 7
"18/06/2023 3:51:56" 136 101 2024 90 0 0 0 0 0 NA 3
"18/06/2023 3:51:56" 16 102 2022 89 0 0 0 0 0 NA 11
"18/06/2023 3:51:56" 136 101 2024 90 0 0 0 0 0 NA 3
"18/06/2023 3:51:57" 24 101 2026 87 0 1 8 0 0 9 2
"18/06/2023 3:51:58" 24 102 2045 44 43 42 41 40 39 38 37
"18/06/2023 3:51:59" 136 101 2023 33 0 1 87 0 0 2 2"""), sep="\s+")
我正在try 使用以下条件读取行值(几列)-
- 如果ID=‘16’与读取的‘Date/Time’、‘C_1’和‘C_10’列值匹配,请判断ID=‘16’.
- 找到前面(From ID=‘16’)行的第一个位置,其中ID=‘136’,并读取从C_2到C_8的列值.
- 找到ID=‘24’的第一个前一个或下一个(从ID=‘16’)行位置,并读取‘C_9’列值(如果两行都为空,则以不为空的为准).
输出-
Date/Time ID C_1 C_2 C_3 C_4 C_5 C_6 C_7 C_8 C_9 C_10
18/06/2023 3:51:55 16 101 2028 61 4 3 18 0 0 9 7