【问题标题】:Python Dataframe Using Questions [closed]Python数据框使用问题[关闭]
【发布时间】:2021-12-03 16:42:46
【问题描述】:

我有 2 个数据框,它们是通过在 python 中运行 sql 创建的:

表A:

C Email Code
c E E1
c E E2
c E E3
c F F1
c F F2

表B:

D Code Info
d E1 ...
g E3 ...
d F1 ...
g E2 ...
d F1 ...
g E2 ...
d F1 ...
g E1 ...
d F1 ...

我想将属于E 的所有信息从TableB 发送到E。 我还需要将属于F的所有信息从TableB发送到F

例如,

  1. 将下面的tableB 发送到E
foo bar
baz bim

我能知道有人知道怎么做吗?

【问题讨论】:

  • 你需要包含一个样本数据和你想要的输出。
  • 这听起来像join,但我不清楚你想要的那种加入。如果您提供一些示例数据和输出,那会澄清一些事情。
  • 不是很清楚如何从输入到输出。
  • 也许你应该运行 SQL 查询直接从数据库中获取它作为一个表。

标签: python pandas database dataframe


【解决方案1】:

你可以mergedataframes

t1 = '''C   Email   Code
c   E   E1
c   E   E2
c   E   E3
c   F   F1
c   F   F2'''

t2 = '''D   Code    Info
d   E1  ...
g   E3  ...
d   F1  ...
g   E2  ...
d   F1  ...
g   E2  ...
d   F1  ...
g   E1  ...
d   F1  ...'''

import pandas as pd
import io

df1 = pd.read_csv(io.StringIO(t1), sep='\s+')
df2 = pd.read_csv(io.StringIO(t2), sep='\s+')

print(df1)
print(df2)

result = pd.merge(df1,  df2)#, on=['Code'])

print(result)

结果:

   C Email Code
0  c     E   E1
1  c     E   E2
2  c     E   E3
3  c     F   F1
4  c     F   F2

   D Code Info
0  d   E1  ...
1  g   E3  ...
2  d   F1  ...
3  g   E2  ...
4  d   F1  ...
5  g   E2  ...
6  d   F1  ...
7  g   E1  ...
8  d   F1  ...

   C Email Code  D Info
0  c     E   E1  d  ...
1  c     E   E1  g  ...
2  c     E   E2  g  ...
3  c     E   E2  g  ...
4  c     E   E3  g  ...
5  c     F   F1  d  ...
6  c     F   F1  d  ...
7  c     F   F1  d  ...
8  c     F   F1  d  ...

Pandas 文档中的更多内容:Merge, join, concatenate and compare


编辑:

如果您想在一封邮件中全部发送给每个用户,那么您可以按Email 分组

groups = result.groupby('Email')

for value, group in groups:
    print('Email:', value)
    print(group)

结果:

Email: E
   C Email Code  D Info
0  c     E   E1  d  ...
1  c     E   E1  g  ...
2  c     E   E2  g  ...
3  c     E   E2  g  ...
4  c     E   E3  g  ...

Email: F
   C Email Code  D Info
5  c     F   F1  d  ...
6  c     F   F1  d  ...
7  c     F   F1  d  ...
8  c     F   F1  d  ...

【讨论】:

    猜你喜欢
    • 2021-10-02
    • 2020-03-24
    • 1970-01-01
    • 2010-09-05
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    相关资源
    最近更新 更多