当前位置: 首页 > 知识库问答 >
问题:

熊猫-用另一个数据帧的值填充一个数据帧的每一行

邓兴为
2023-03-14

我有两个Dataframes一个与日期集(df1)和另一个与emp_ids集(df2)。我试图创建一个新的Dataframe,这样df2中的每个emp_id都被标记为df1中的每个日期。

下面给出了我的数据帧的外观

df1

2018-01-01
2018-01-02
2018-01-03
2018-01-04

df2

emp_1
emp_2
emp_3

预期产出:

2018-01-01,emp_1
2018-01-02,emp_1
2018-01-03,emp_1
2018-01-04,emp_1
2018-01-01,emp_2
2018-01-02,emp_2
2018-01-03,emp_2
2018-01-04,emp_2
2018-01-01,emp_3
2018-01-02,emp_3
2018-01-03,emp_3
2018-01-04,emp_3

我将日期列转换为字符串,并尝试执行以下操作,但返回的数据框为空

我尝试做pd.merge(df1, df2])

共有1个答案

西门奇希
2023-03-14

你想做的叫做carthesian产品。在熊猫中,您可以这样做:

df1['key'] = 0
df2['key'] = 0

result = df1.merge(df2, how='outer').drop('key',axis= 1)

编辑:证明它的工作原理

df1 = pd.DataFrame(['2018-01-01','2018-01-02','2018-01-03','2018-01-04'],columns=['date'])
df2 = pd.DataFrame(['emp_1','emp_2','emp_3'],columns=['id'])

# res
df1['key'] = 0
df2['key'] = 0

res = df1.merge(df2, how='outer').drop('key',axis= 1)

# print
print(res.sort_values('id'))

慰问:

    date        id
0   2018-01-01  emp_1
3   2018-01-02  emp_1
6   2018-01-03  emp_1
9   2018-01-04  emp_1
1   2018-01-01  emp_2
4   2018-01-02  emp_2
7   2018-01-03  emp_2
10  2018-01-04  emp_2
2   2018-01-01  emp_3
5   2018-01-02  emp_3
8   2018-01-03  emp_3
11  2018-01-04  emp_3
 类似资料:
  • 我有两个数据帧,它们的列名相同,但行数不同。第一个数据帧(a)看起来与此类似: 注:站点5、6、8和12故意丢失。 第二个数据帧(b)看起来像这样: 我想要实现的是: 在那里我注入(我肯定有一个更好的术语)数据帧b到数据帧a的数据,但是我想用零替换b中的任何NAs,并保持a中的NAs不变。 我发现并尝试了这个代码: 但它会带来NAs。我考虑先将NAs替换为零,但即使如此,它也会抹去我目前在数据帧a

  • 然后,我会添加初始值,然后查看这个数据,从前面的行计算新行,例如左右。 我目前使用的代码如下所示,但我觉得它有点难看,必须有一种方法直接使用DataFrame来实现这一点,或者只是一种更好的方法。注意:我使用的是Python2.7。

  • 我从熊猫数据帧文档开始:数据结构简介 我想在一个时间序列类型的计算中迭代地填充数据帧。所以基本上,我想用列A、B和时间戳行初始化数据帧,全0或全NaN。 然后,我会添加初始值并检查这些数据,根据之前的行计算新行,比如说< code > row[A][t]= row[A][t-1]1 左右。 我目前正在使用下面的代码,但我觉得它有点难看,必须有一种方法直接用数据帧来做这件事,或者一般来说是一种更好的

  • 我有两个Pandas Dataframe和,其中是的一部分,我想创建一个Dataframe,其中包含中的code>。 以下是一个例子: 注: 我的DataFrame可能有多个列,但是必须仅在列上进行匹配。

  • 向对象似乎很难完成。有3个与此相关的stackoverflow问题,没有一个给出有效的答案。 这就是我要做的。我有一个DataFrame,我已经知道它的形状以及行和列的名称。 现在,我有了一个迭代计算行值的函数。我如何用字典或?以下是失败的各种尝试: 显然,它试图添加一列而不是一行。 非常不具信息性的错误消息。 显然,这仅用于在数据框中设置单个值。 我不想忽略索引,否则结果如下: 它确实对齐了列名

  • 我有两个数据框,都包含英文和中文单词字符串,我想知道其中一个是另一个的子集: