我有两个数据帧df_att_transposed和df_1。df_1有管理程序和名称列。第二个数据框架,df_att_transposed对所有的名字都有考勤。我的第一个dataframe构造函数df_1是-
{'Sup': {0: 'Sup-1', 1: 'Sup-1', 2: 'Sup-1', 3: 'Sup-1', 4: 'Sup-2',....},'Name': {0: 'Name-1', 1: 'Name-2', 2: 'Name-3'...}}我的第二个数据帧构造函数df_att_transposed是-
{0: {0: Timestamp('2022-01-31 00:00:00'), 1: Timestamp('2022-02-01 00:00:00'), 2: Timestamp('2022-02-02 00:00:00'),...} 1: {0: 'P', 1: 'P', 2: 'P', 3: 'P', 4: 'P'...}}在我的新数据框架中,我将添加来自df_att_transposed的相关人员的日期(第0列)和出勤栏。在df_1中,我每次取一行,其中包含for循环每次迭代中的名称和监控器,并将其添加到数据帧中的所有行中。我就是这么做新数据的-
rows = df_1.shape[0]
for i in range(rows):
new_df = df_att_transposed.iloc[:,[0,i+1]].copy()
new_df['Sup'] = df_1.iloc[i]['Sup']
new_df['Name'] = df_1.iloc[i]['Name']上面的代码添加了数据,但它只保留了new_df中最后一次迭代中的数据。对于每一次迭代,以前的数据都会被替换。如何在新的数据框架中将来自所有迭代的数据保持在一起?
编辑:(I)输出应该是这样的-
Sup Name 0 1
Sup-1 Name-1 28/3/2022 P
Sup-1 Name-1 27/3/2022 P
Sup-1 Name-1 26/3/2022 P
.....
Sup-2 Name-2 28/3/2022 P
Sup-2 Name-2 27/3/2022 P
Sup-2 Name-2 26/3/2022 P
......我编写的代码从df_1中取一个名称/行,从df_att_transposed中取两列,用new_df写数据。然后在下一次迭代中,从df_1中取出另一行,从df_att_transposed中再取两列,然后覆盖以前存储在new_df中的数据。我希望在每次迭代中追加数据,而不是替换数据。
(ii) df_att_transposed看起来像这样(比如说5名雇员)-
0 1 2 3 4 5
0 28/3/2022 P P P P P
1 27/3/2022 P P P P P
2 26/3/2022 P P P P P
....发布于 2022-03-28 12:42:30
你在找交叉合并吗?
new_df = df_1.merge(df_att_transposed, how='cross')
print(new_df)
# Output
Sup Name 0 1
0 Sup-1 Name-1 2022-01-31 P
1 Sup-1 Name-1 2022-02-01 P
2 Sup-1 Name-1 2022-02-02 P
3 Sup-1 Name-2 2022-01-31 P
4 Sup-1 Name-2 2022-02-01 P
5 Sup-1 Name-2 2022-02-02 P
6 Sup-1 Name-3 2022-01-31 P
7 Sup-1 Name-3 2022-02-01 P
8 Sup-1 Name-3 2022-02-02 P
9 Sup-2 Name-4 2022-01-31 P
10 Sup-2 Name-4 2022-02-01 P
11 Sup-2 Name-4 2022-02-02 P
12 Sup-2 Name-5 2022-01-31 P
13 Sup-2 Name-5 2022-02-01 P
14 Sup-2 Name-5 2022-02-02 P设置
>>> df_1
Sup Name
0 Sup-1 Name-1
1 Sup-1 Name-2
2 Sup-1 Name-3
3 Sup-2 Name-4
4 Sup-2 Name-5
>>> df_att_transposed
0 1
0 2022-01-31 P
1 2022-02-01 P
2 2022-02-02 Phttps://stackoverflow.com/questions/71646784
复制相似问题