Solución:
Proporcionar una lista de nombres de columnas en read_csv () debería funcionar.
ej: nombres =[‘a’, ‘b’, ‘c’, ‘d’, ‘e’]
https://github.com/pydata/pandas/issues/2981
Editar: si no desea proporcionar nombres de columna, haga lo que sugirió Nicholas
Puede generar dinámicamente nombres de columna como contadores simples (0, 1, 2, etc.).
Genere nombres de columna de forma dinámica
# Input
data_file = "smallsample.txt"
# Delimiter
data_file_delimiter=","
# The max column count a line in the file could have
largest_column_count = 0
# Loop the data lines
with open(data_file, 'r') as temp_f:
# Read the lines
lines = temp_f.readlines()
for l in lines:
# Count the column count for the current line
column_count = len(l.split(data_file_delimiter)) + 1
# Set the new most column count
largest_column_count = column_count if largest_column_count < column_count else largest_column_count
# Close file
temp_f.close()
# Generate column names (will be 0, 1, 2, ..., largest_column_count - 1)
column_names = [i for i in range(0, largest_column_count)]
# Read csv
df = pandas.read_csv(data_file, header=None, delimiter=data_file_delimiter, names=column_names)
# print(df)
Los valores faltantes se asignarán a las columnas para las que sus líneas CSV no tienen un valor.
La versión pulida de la respuesta de PS es la siguiente. Funciona. Recuerde que hemos insertado muchos valores faltantes en el marco de datos.
### Loop the data lines
with open("smallsample.txt", 'r') as temp_f:
# get No of columns in each line
col_count = [ len(l.split(",")) for l in temp_f.readlines() ]
### Generate column names (names will be 0, 1, 2, ..., maximum columns - 1)
column_names = [i for i in range(0, max(col_count))]
### Read csv
df = pd.read_csv("smallsample.txt", header=None, delimiter=",", names=column_names)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)