#python #pandas #csv
#python #панды #csv
Вопрос:
Я хочу преобразовать много CSV-файлов (для каждого CSV-файла мне просто нужны первые пять элементов первого столбца) в текстовый файл. А вот и мой код.
импортируйте pandas как pd import os
for root, dirs, files in os.walk("./data_v6/level3/"):
count = 1
for dir in dirs:
print(dir)
count= count 1
print(count)
df = pd.read_csv('data_v6/level3/' dir '/tweets_topic.csv',usecols=[0])
print(df.loc[0:4])
#print(df)
df.to_csv('data_v6/level3/topic_DIC.txt', header=None, index=None, sep=' ', mode='a')
Но это может не сработать. Я получил эту ошибку.
File "F:/RUN/RUN/GetDictionary.py", line 11, in <module>
print(df.loc[0:4])
File "F:anacondalibsite-packagespandascoreindexing.py", line 879, in __getitem__
return self._getitem_axis(maybe_callable, axis=axis)
File "F:anacondalibsite-packagespandascoreindexing.py", line 1088, in _getitem_axis
return self._get_slice_axis(key, axis=axis)
File "F:anacondalibsite-packagespandascoreindexing.py", line 1122, in _get_slice_axis
indexer = labels.slice_indexer(
File "F:anacondalibsite-packagespandascoreindexesbase.py", line 4966, in slice_indexer
start_slice, end_slice = self.slice_locs(start, end, step=step, kind=kind)
File "F:anacondalibsite-packagespandascoreindexesbase.py", line 5167, in slice_locs
start_slice = self.get_slice_bound(start, "left", kind)
File "F:anacondalibsite-packagespandascoreindexesbase.py", line 5079, in get_slice_bound
label = self._maybe_cast_slice_bound(label, side, kind)
File "F:anacondalibsite-packagespandascoreindexesbase.py", line 5031, in _maybe_cast_slice_bound
self._invalid_indexer("slice", label)
File "F:anacondalibsite-packagespandascoreindexesbase.py", line 3267, in _invalid_indexer
raise TypeError(
TypeError: cannot do slice indexing on Index with these indexers [0] of type int
Комментарии:
1. Можете ли вы поделиться образцами входных / выходных данных?
2. я думаю, вам нужно использовать
iloc
вместоloc
нарезки панд: pandas.pydata.org/pandas-docs/stable/reference/api /…
Ответ №1:
Вы пытаетесь использовать мощную перфораторную дрель там, где более уместной была бы простая отвертка. Pandas действительно очень мощная библиотека, которая прекрасно обрабатывает csv-файлы с автоматическим определением типа, но вам не нужно все это: вам нужны только 4 первых поля первого столбца.
Просто используйте модуль csv здесь:
with open('data_v6/level3/topic_DIC.txt', 'a') as outfile:
for root, dirs, files in os.walk("./data_v6/level3/"):
count = 1
for dir in dirs:
print(dir)
count= count 1
print(count)
with open('data_v6/level3/' dir '/tweets_topic.csv') as fd:
rd = csv.reader(fd)
try:
_ = next(rd) # skip header line
exception StopIteration:
print('data_v6/level3/' dir '/tweets_topic.csv is empty')
continue
try:
for i in range(4):
try:
row = next(rd)
print(row[0], file=outfile)
except StopIteration:
break
Комментарии:
1. Спасибо тебе, брат. Я пробовал этот код, но он все равно не может работать.
2. SyntaxError: неожиданный EOF при синтаксическом анализе.
3. @Max: это синтаксическая ошибка в полном скрипте Python. Дважды проверьте отступы, кавычки и скобки…