【发布时间】:2020-12-12 00:37:33
【问题描述】:
我有两个不同的数据框:A、B。事件列具有我用来比较两个数据框的相似数据。 我想给 Dataframe A 一个新列,dfA.newContext#。
为此,我需要使用事件列。 我想遍历 Dataframe A 以找到 Event 的匹配项并将 dfB.context# 分配给 dfA.newContext#
我认为循环是最好的方法,因为我需要检查一些条件。
这可能要求有点多,但我真的被困住了.. 我想做这样的事情:
offset = 0
Iterate through dfA:
extract event
extract context#
Iterate through dfB:
if dfB.event == dfA.event:
dfA.newContext# = dfB.context#
offset = dfA.new_context# - dfA.context#
if dfB.event == "Special":
dfA.newContext# = dfA.context# - offset
数据框 A
+-------------+---------+------+
|dfA.context# |dfA.event| Name |
+-------------+---------+------+
| 0 | Special | Bob |
| 2 | Special | Joan |
| 4 | Bird | Susie|
| 5 | Special | Alice|
| 6 | Special | Tom |
| 7 | Special | Luis |
| 8 | Parrot | Jill |
| 9 | Special | Reed |
| 10 | Special | Lucas|
| 11 | Snake | Kat |
| 12 | Special | Bill |
| 13 | Special | Leo |
| 14 | Special | Peter|
| 15 | Special | Mark |
| 16 | Special | Joe |
| 17 | Special | Lora |
| 18 | Special | Care |
| 19 |Elephant | David|
| 20 | Special | Ann |
| 21 | Special | Larry|
| 22 | Skunk | Tony |
+-------------+---------+------+
数据框 B
+-------------+---------+
|dfB.context# |dfB.event|
+-------------+---------+
| 0 | Special |
| 0 | Special |
| 0 | Special |
| 1 | Special |
| 1 | Special |
| 1 | Special |
| 1 | Special |
| 2 | Bird |
| 2 | Bird |
| 3 | Special |
| 6 | Parrot |
| 6 | Parrot |
| 6 | Parrot |
| 6 | Parrot |
| 7 | Special |
| 7 | Special |
| 9 | Snake |
| 9 | Snake |
| 9 | Snake |
| 10 | Special |
| 17 |Elephant |
| 17 |Elephant |
| 17 |Elephant |
| 18 | Special |
| 18 | Special |
| 20 | Skunk |
| 20 | Skunk |
| 21 | Special |
| 26 | Antelope|
+-------------+---------+
所需的DF
+-------------+---------+------+-------------+
|dfA.context# |dfA.event| Name |dfA.newContext#|
+-------------+---------+------+-------------+
| 0 | Special | Bob | 0 |
| 2 | Special | Joan | 1 |
| 4 | Bird | Susie| 2 |
| 5 | Special | Alice| 3 |
| 6 | Special | Tom | |
| 7 | Special | Luis | |
| 8 | Parrot | Jill | 6 |
| 9 | Special | Reed | 7 |
| 10 | Special | Lucas| |
| 11 | Snake | Kat | 9 |
| 12 | Special | Bill | 10 |
| 13 | Special | Leo | |
| 14 | Special | Peter| |
| 15 | Special | Mark | |
| 16 | Special | Joe | |
| 17 | Special | Lora | |
| 18 | Special | Care | |
| 19 |Elephant | David| 17 |
| 20 | Special | Ann | 18 |
| 21 | Special | Larry| |
| 22 | Skunk | Tony | 20 |
+-------------+---------+------+-------------+
如何一次遍历两个数据框并访问信息?
【问题讨论】:
-
你卡在哪一部分了?
-
我对如何准确地遍历两个数据帧并访问每个行/列中的信息感到困惑。我认为 pandas 对循环不是很友好,但我认为这可能是更明确地迭代以处理我的每个案例的最佳方式。
-
如果你有一个数据框
df,你可以按行遍历它:for i in range(len(df)):,在for循环访问中,每个元素都可以使用df.loc[row, col]访问。另外,如果您想更改某些元素,请使用df.at[row, col] = new_value。
标签: python pandas dataframe loops