我有两个相当大的数据集。 DF1示例:
Workflow| Operation | Profile | Type | Name | ...
123 1 2 Low_Cost xyz ...
456 2 5 High_Cost z ...
DF2示例:
all_Data = pd.merge(left=DF1,right=DF2, how='inner', left_on =['A_Workflow_Type_ID ','B_Workflow_Type_ID '], right_on=['Workflow'])
我需要合并两个数据集而不创建多个NaN和多个列。所以我在DF2的工作流上合并来自DF1的信息A_Workflow_Type_ID和B_Workflow_Type_ID。 我在pandas中使用了几个连接操作并且它失败了合并选项。
我的最后一次尝试:
void (^block)(FIRDataSnapshot *);
block = ^void(FIRDataSnapshot *snapshot) {
FIRDatabaseQuery *query;
[query observeSingleEventOfType:FIRDataEventTypeValue
withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
}];
};
FIRDatabaseQuery *query;
[query observeSingleEventOfType:FIRDataEventTypeValue withBlock:block];
但是这会返回一个错误,即双方必须保持相同的长度。
感谢您的帮助!
答案 0 :(得分:0)
#generate all column without strings Workflow
cols = DF1.columns[~DF1.columns.str.contains('Workflow')]
print (cols)
Index(['id'], dtype='object')
df = DF1.melt(cols, value_name='Workflow', var_name='type')
print (df)
id type Workflow
0 1 A_Workflow_Type_ID 123.0
1 2 A_Workflow_Type_ID 789.0
2 3 A_Workflow_Type_ID 333.0
3 1 B_Workflow_Type_ID 456.0
4 2 B_Workflow_Type_ID 222.0
5 3 B_Workflow_Type_ID NaN
all_Data = pd.merge(left=df,right=DF2, on ='Workflow')
print (all_Data)
id type Workflow Operation Profile Type Name
0 1 A_Workflow_Type_ID 123 1 2 Low_Cost xyz
1 1 B_Workflow_Type_ID 456 2 5 High_Cost z