社區中的第一篇文章(恭喜或抱歉:-))。我在下面為我試圖分析的調查資料提供了一些代碼。我正在嘗試捕獲任何列中值為“1”的行。它被標記為浮點數,但我轉換為整數并且它不起作用。使用引號并沒有作業。有什么建議嗎?
# Dependencies and Setup
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import json
from pprint import pprint
import requests
import time
from scipy import stats
import seaborn as sn
%matplotlib inline
# Read csv
us_path = "us_Data.csv"
us_responses = pd.read_csv(us_path)
# Created filtered data frame.
preexisting_us = us_responses
# Filter data.
preexisting_us = us_responses[us_responses["diabetes"] == "1" | us_responses(us_responses["cardiovascular_disorders"] == "1") | us_responses(us_responses["obesity"] == "1") | us_responses(us_responses["respiratory_infections"] == "1") | us_responses(us_responses["respiratory_disorders_exam"] == "1") | us_responses(us_responses["gastrointestinal_disorders"] == "1") | us_responses(us_responses["chronic_kidney_disease"] == "1") | us_responses(us_responses["autoimmune_disease"] == "1") | us_responses(us_responses["chronic_fatigue_syndrome_a"] == "1")]
uj5u.com熱心網友回復:
首先,您可能應該將新 DataFrame 定義為原始 DataFrame 的副本,例如df = us_responses.copy(). 這樣你就可以確定原來的DataFrame不會被修改(建議你看一下檔案)。
現在,要過濾 DataFrame,您可以使用比您的代碼更簡單的方法。例如:
cols_to_check = ['diabetes', 'cardiovascular_disorders', ... ]
df_filtered = df.loc[df[cols_to_check].sum(axis=1) > 0, :]
這樣,通過計算所選列的總和,如果至少有一個值為1,則對應的行保留在過濾后的DataFrame中。
但是,如果您真的想保持代碼原樣(我不建議這樣做),則需要進行一些更正:
preexisting_us = preexisting_us[preexisting_us["diabetes"] == 1 | (preexisting_us["cardiovascular_disorders"] == 1) | (preexisting_us["obesity"] == 1) | (preexisting_us["respiratory_infections"] == 1) | (preexisting_us["respiratory_disorders_exam"] == 1) | (preexisting_us["gastrointestinal_disorders"] == 1) | (preexisting_us["chronic_kidney_disease"] == 1) | (preexisting_us["autoimmune_disease"] == 1) | (preexisting_us["chronic_fatigue_syndrome_a"] == 1)]
如果您有興趣了解更多資訊有關使用過濾loc(),在這里你可以找到的檔案。
請遵循@mozway 的建議,以便下次發布更清晰的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/336096.html
