我有這個代碼:
import pandas as pd
zed = pd.DataFrame(data = {'a': [3, -5], 'b': [-4, 7]})
zed['c'] = zed['a'].astype(str) ' ' zed['b'].astype(str)
這使:
a b c
0 3 -4 3 -4
1 -5 7 -5 7
但我正在尋找的專欄c是:
a b c
0 3 -4 3 -4
1 -5 7 -5 7
即正數應該有一個 前綴。
if/else當我到處添加條件時,我的代碼很快就會變得混亂。我創建了以下功能:
def plus_prefix(a):
if a > 0:
b = ' ' a.astype(str)
else:
b = a.astype(str)
return b
但zed['c'] = plus_prefix(zed['a']) ' ' plus_prefix(zed['b'])會引發錯誤The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()。如何改進?如果我可以創建plus_prefix它,以便它可以在最后被鏈接,那就太好了,zed['a'].plus_prefix().
uj5u.com熱心網友回復:
您可以使用該apply()方法將函式應用于 DataFrame(請參閱檔案):
zed['c'] = zed['a'].apply(plus_prefix) ' ' zed['b'].apply(plus_prefix)
但是,由于您的值是整數,因此我收到了一個新錯誤,因為它不知道astype(). 修改您的功能后,我能夠讓它作業:
import pandas as pd
def plus_prefix(a):
if a > 0:
b = ' ' str(a)
else:
b = str(a)
return b
zed = pd.DataFrame(data = {'a': [3, -5], 'b': [-4, 7]})
zed['c'] = zed['a'].apply(plus_prefix) ' ' zed['b'].apply(plus_prefix)
uj5u.com熱心網友回復:
這應該夠了吧:
zed['c'] = zed['a'].apply(lambda x: '{: }'.format(x)) ' ' zed['b'].apply(lambda x: '{: }'.format(x))
蟒蛇> = 3.6
正如@Tomerikoo建議的那樣,可以使用 f-String 簡化代碼:
zed['c'] = zed['a'].apply(lambda x: f'{x: }') ' ' zed['b'].apply(lambda x: f'{x: }')
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/427007.html
上一篇:如何反轉熊貓系列
下一篇:在熊貓資料框中連續組合不同列的值
