#python #jupyter-notebook
#python #jupyter-записная книжка
Вопрос:
Я хочу передать фрейм данных, основанный на присоединенных к серверу csv, другому методу.
col0 = ["Dov"]
values = A, B
Но есть некоторые CSV-файлы, которые содержат только «,,,,,,,,» в разной длине в col0 в конце. от 20 до 50 строк. Длина странных значений одинакова для файла, но отличается от файла к файлу. Остальные столбцы заполняются только обычными.
Я играл с loc, drop и dropna. Некоторое время боролся и искал в stackoverflow. По-прежнему без подсказки.
def dataImport():
header_appended = False
concat_i = []
progress = len(linkGenerator())
count = 1
print("0 of " str(progress))
for i in list(linkGenerator()):
if header_appended != True:
print("Appending : " str(i))
df_raw = pd.read_csv(i, header = 0, sep = ",", engine = "python", encoding = "ISO-8859-1", index_col=False )
header_appended = True
print("Appended.")
time.sleep(2)
else:
print("Appending : " str(i))
df_internal = pd.read_csv(i, sep = ",", engine = "python", encoding = "ISO-8859-1", index_col=False )
concat_i.append(df_internal)
print("Appended.")
time.sleep(2)
print(str(count) " of " str(progress))
count = count 1
df_raw = pd.concat(concat_i, ignore_index = True)
return df_raw
Работает до сих пор. df_raw = pd.concat(concat_i, ignore_index = True)
Моя проблема заключается только в следующей части.
Ответ №1:
Код, который я сделал, мог бы это сделать:
Надеюсь, это поможет. Категория функций str довольно мощна в pandas. Я не знаю, какое минимальное количество «,» вы видите, а также col0 должен быть типом str / object.
Ответ №2:
Спасибо. за попытку мне помочь. К сожалению, не сработало.
df_raw = df_raw[~df_raw["Div"].str.match(",,,,,,,,,,,,,,,,,,,,,,,,,,,", na = False)]
# df_raw = df_raw.drop(df_raw["Div"] != 0, inplace = True)
# df_raw = df_raw.drop(["Div"] == "")
# df_raw = df_raw.loc[df_raw["Div"] != ""]
# df_raw = df_raw[(df_raw["Div"] != ",,,,,,") | (df_raw["Div"] != ",,,,,,,,,,,,,,,,,,,,,,,,,,,,")].copy()
Результат каждый раз:
Ответ №3:
Понял! Решение было:
df_raw.dropna(subset = ["Div"], inplace = True)