python允许合并单元格/数据框内容
我试图将输入数据格式化为下面提到的格式,我不确定如何实现,因为我对熊猫还不熟悉 以xlsx格式输入数据: 它被解析为下面的数据格式 作为pd进口熊猫python允许合并单元格/数据框内容,python,pandas,Python,Pandas,我试图将输入数据格式化为下面提到的格式,我不确定如何实现,因为我对熊猫还不熟悉 以xlsx格式输入数据: 它被解析为下面的数据格式 作为pd进口熊猫 excel_file = 'sample.xlsx' ip_data_read = pd.read_excel(excel_file) ip_data_read["Test Case(ID / Brief Description)"] = ip_data_read["Test Case(ID / Brief Description)"].ffil
excel_file = 'sample.xlsx'
ip_data_read = pd.read_excel(excel_file)
ip_data_read["Test Case(ID / Brief Description)"] = ip_data_read["Test Case(ID / Brief Description)"].ffill()
打印如下:
Test Case(ID / Brief Description) Action / Step Expected Result (Description)
TC_001 a b
TC_001 c d
TC_001 e NaN
TC_001 f NaN
TC_001 NaN g
TC_002 a11 qwerty
TC_002 qqq mnbghd
TC_002 NaN cccc12
TC_002 qwwqwq33 NaN
TC_003 a1 b1
TC_004 NaN c2
TC_005 NaN d2
TC_006 NaN s2
TC_007 a3 d4
TC_099 abcdefg NaN
TC_100 a b
TC_100 c d
TC_100 e NaN
TC_100 f NaN
TC_100 NaN g
TC_101 xx yy
TC_101 er gf
TC_101 vv i
我希望数据帧是这样的
Test Case(ID / Brief Description) Steps
TC_001 a,b
c,d
e
f
g
TC_002 a11,qwerty
TC_002 qqq,mnbghd
TC_002 cccc12
TC_002 qwwqwq33
TC_003 a1,b1
TC_004 c2
TC_005 d2
TC_006 s2
TC_007 a3,d4
TC_099 abcdefg
TC_100 a,b
c,d
e
f
g
TC_101 xx ,yy
er ,gf
vv ,i
例如,与TC_001关联的值/步骤应该给我一个字符串,如
a,b
c,d
e
f
g
与替换缺少的值一起使用:
s = df.pop('Expected Result (Description)').fillna('')
df['Steps'] = df.pop('Action / Step').fillna('').str.cat(s, sep=',').str.strip(',')
如果有许多列:
df1 = (df.set_index('Test Case(ID / Brief Description)')
.apply(lambda x: ','.join(x.dropna()), axis=1)
.reset_index())
样本:
df = pd.DataFrame({'Test Case(ID / Brief Description)':range(4),
'Action / Step':[np.nan, np.nan,'a', 'd'],
'Expected Result (Description)':['s', np.nan, np.nan,'m']})
print (df)
Test Case(ID / Brief Description) Action / Step \
0 0 NaN
1 1 NaN
2 2 a
3 3 d
Expected Result (Description)
0 s
1 NaN
2 NaN
3 m
df1 = (df.set_index('Test Case(ID / Brief Description)')
.apply(lambda x: ','.join(x.dropna()), axis=1)
.reset_index(name='Steps'))
print (df1)
Test Case(ID / Brief Description) Steps
0 0 s
1 1
2 2 a
3 3 d,m
它工作得很好,但我有一个问题,当我给axis=1时,如果有不感兴趣的列也被合并,如何避免这种情况?@kbk-然后将
df.set_index('testcase(ID/short Description)')
更改为df.set_index(['testcase(ID/short Description)','col1-nomt merged','col2 not merged',…]))
-如您所需添加列名称谢谢,现在它可以工作了,只是行没有合并成单个字符串,如本文最后一点所述questing@kbk-如果数据类似于df=pd.DataFrame({'testcase(ID/简要描述)][1,1,2,2],'no merged':[1,2,3,4],'not merged2':[5,7,8,8],'Action/Step':[np.nan,np.nan,'a','d'],'Expected Result(Description):[s',np.nan,np.nan,'m']})打印(df)
预期输出是什么?我是通过df1.groupby('Test Case(ID/shortdescription)')['Steps']得到的。应用('.join)。重置索引()