![](/img/trans.png)
[英]How populate column in pandas dataframe with column names where value meets condition?
[英]Python Pandas - replace all values in dataframe where the value meets certain condition
我有一個 dataframe 包含表示為使用逗號分隔符的字符串的數字(例如 150,000)。 還有一些值用“-”表示。
我正在嘗試將所有表示為字符串的數字轉換為浮點數。 “-”將保持原樣。
我當前的代碼使用 for 循環來迭代每一列和每一行以查看每個單元格是否有逗號。 如果是這樣,它會刪除逗號,然后將其轉換為數字。
這在大多數情況下都可以正常工作,除了一些數據框有重復的列名,那就是它分崩離析的時候。
是否有更有效的方法來進行此更新(即不使用循環)並且還可以避免列名重復時的問題?
當前代碼:
for col in statement_df.columns:
row = 0
while row < len(statement_df.index):
row_name = statement_df.index[row]
if statement_df[col][row] == "-":
#do nothing
print(statement_df[col][row])
elif statement_df[col][row].find(",") >= 0:
#statement_df.loc[col][row] = float(statement_df[col][row].replace(",",""))
x = float(statement_df[col][row].replace(",",""))
statement_df.at[row_name, col] = x
print(statement_df[col][row])
else:
x = float(statement_df[col][row])
statement_df.at[row_name, col] = x
print(statement_df[col][row])
row = row + 1
在 dataframe 本身上使用 str.replace str.replace(',', '')
對於 dataframe 如下所示
Name Count
Josh 12,33
Eric 24,57
Dany 9,678
像這樣申請
df['Count'] = df['Count'].str.replace(',', '')
df
它會給你以下 output
Name Count
0 Josh 1233
1 Eric 2457
2 Dany 9678
您可以為此使用iloc
功能 -
for idx in range(len(df.columns)):
df.iloc[:, idx] = df.iloc[:, idx].apply(your_function)
your_function
中的代碼應該能夠處理來自一行的輸入。 例如 -
def your_function(x):
if x == ',': return 0
return float(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.