我知道這樣的問題已經被問到了多少類型,但到目前爲止我還沒有能夠找到這個問題的答案。Python Pandas轉換列數據類型
我已經加入了兩個.csv文件和Pandas,現在我想添加更多列到新加入的.csv文件中,並根據已有的數據計算值。
不過,我不斷收到此錯誤:
"The truth value of a is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()."
現在顯然似乎是我的專欄(這是所有整數)的數據類型的問題,但我還沒有找到一個(工作)將該列設置爲整數的方法。
這裏是我的代碼:
import pandas
def nscap(ns):
if ns <= 13:
x = ns
elif ns > 13:
x = 13
return x
df_1 = pandas.read_csv("a.csv", sep=';', names=["DWD_ID", "NS"], header=0)
df_2 = pandas.read_csv("b.csv", sep=';', names=["VEG", "DWD_ID"], header=0)
df_joined = pandas.merge(df_1, df_2, on="DWD_ID")
df_joined["NS_Cap"] = nscap(df_joined["NS"])
如果我設置
df_joined["NS_Cap"] = nscap(20)
的代碼工作正常
我已經試過功能,如.astype(INT)或.to_numeric(),但除非我的語法錯誤,否則不適用於我。
在此先感謝!
嗨,歡迎來到Stack Overflow。 IIUYC,你想*應用*'nscap'到'NS'列來獲得'NS_Cap',我是否正確? – Manhattan
你在'df_joined ['NS_Cap'] = df_joined ['NS']。clip_upper(13)'後面':參見:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.clip_upper .html這裏的錯誤是你試圖用一個理解標量值的運算符比較一個數組,如果你做了'df_joined ['NS']。apply(nscap)''那麼它應該可以工作 – EdChum
這就像一個魅力!非常感謝!到目前爲止從來沒有遇到過這種語法! – Khaled