我有以下資料框,我將正值轉換為負值,將負值轉換為正值。
d = {'epi':[-1.343, -7.334, -1.2, 4.5, -1.1]}
x = pd.DataFrame(d)
當我插入第一列時,它很好:
x.epi = x.epi.astype(str)
x['negs_to_pos'] = x.loc[x.epi.str.contains('-')].astype(float).abs()
導致:
epi negs_to_pos
0 -1.343 1.343
1 -7.334 7.334
2 -1.2 1.200
3 4.5 NaN
4 -1.1 1.100
但是,當我在另一列中添加時,出現錯誤:
x['pos_to_neg'] = x.loc[~x.epi.str.contains('-')]
x['pos_to_neg'] = '-' x['pos_to_neg']
ValueError: Wrong number of items passed 2, placement implies 1
我似乎無法弄清楚這個...
期望的輸出:
epi negs_to_pos pos_to_negs
0 -1.343 1.343 NaN
1 -7.334 7.334 NaN
2 -1.2 1.200 NaN
3 4.5 NaN -4.5
4 -1.1 1.100 NaN
uj5u.com熱心網友回復:
如果添加到,您可以嘗試回傳Series一列:DataFrameepiloc
x['pos_to_neg'] = x.loc[~x.epi.str.contains('-'), 'epi']
更簡單的解決方案:
m = x.epi < 0
x['negs_to_pos'] = -x.loc[m, 'epi']
x['pos_to_neg'] = -x.loc[~m, 'epi']
print (x)
epi negs_to_pos pos_to_neg
0 -1.343 1.343 NaN
1 -7.334 7.334 NaN
2 -1.200 1.200 NaN
3 4.500 NaN -4.5
4 -1.100 1.100 NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/426990.html
