【问题标题】:iterate over dataframe with conditions使用条件迭代数据框
【发布时间】:2022-01-02 09:32:21
【问题描述】:

最初我有两个数据框:

数据框 A:

  Column1   Column2
0   X-5       H4
1   X-3       H4
2   X-4       H5
3   X-5       H5
4   X-5       H-3
5   X-3       H-3
6   X-3       H-3
7   X-4       H-4
8   X-4       H-5
9   X-3       H-4
10  X-5       H-3
11  X-3       H-3
12  X-5       H-5
13  X-5       H-3

数据框 2:

  Column1   Hours
0   X-5      12
1   X-4      14
2   X-3      10

我希望能够在满足“Column1”的条件时将两个数据帧合并为一个,此外还能够消除重复的行并计算它们重复的次数:

Column1 Column2 Repeat  Hours
0   H3    X-3      3    14
1   H-3   X-5      3    12
2   H-4   X-3      2    14
3   H-4   X-4      1    10
4   H-4   X-5      1    12
5   H-5   X-4      2    10
6   H-5   X-5      2    12

如果您能帮助我,我将不胜感激,因为我不知道该怎么做。提前致谢

【问题讨论】:

  • 您是否对第 1 列和第 2 列中的值进行了翻转? column1 的最终输出为 H;原始数据框 A 的 column1 中没有 H 值

标签: python-3.x pandas dataframe loops merge


【解决方案1】:

这是你想要的吗?

a.Column2 = a.Column2.str.replace("H(\d)", "H-\\1", regex=True)
pd.merge(a, b, on="Column1").groupby(["Column2", "Column1"], as_index=False).agg(
    Repeat=("Hours", "size"), Hours=("Hours", "first")
)
#   Column2 Column1  Repeat  Hours
# 0     H-3     X-3       3     10
# 1     H-3     X-5       3     12
# 2     H-4     X-3       2     10
# 3     H-4     X-4       1     14
# 4     H-4     X-5       1     12
# 5     H-5     X-4       2     14
# 6     H-5     X-5       2     12

【讨论】:

  • 如果这是我想要的,一个问题,比如除了添加单列“小时”之外,我还想添加两列。再举一个例子,一列与小时相同,但称为 hours2
  • 我试图对一列的所有元素求和,并将新的数据框“df.a”导出到 excel,但我不能。我该怎么办?
猜你喜欢
  • 2019-07-08
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-30
  • 1970-01-01
相关资源
最近更新 更多