Skip to content
Advertisement

How do I convert a Pandas dataframe to a PyTorch tensor?

How do I train a simple neural network with PyTorch on a pandas dataframe df?

The column df["Target"] is the target (e.g. labels) of the network. This doesn’t work:

import pandas as pd
import torch.utils.data as data_utils

target = pd.DataFrame(df['Target'])
train = data_utils.TensorDataset(df, target)
train_loader = data_utils.DataLoader(train, batch_size=10, shuffle=True)

Advertisement

Answer

I’m referring to the question in the title as you haven’t really specified anything else in the text, so just converting the DataFrame into a PyTorch tensor.

Without information about your data, I’m just taking float values as example targets here.

Convert Pandas dataframe to PyTorch tensor?

import pandas as pd
import torch
import random

# creating dummy targets (float values)
targets_data = [random.random() for i in range(10)]

# creating DataFrame from targets_data
targets_df = pd.DataFrame(data=targets_data)
targets_df.columns = ['targets']

# creating tensor from targets_df 
torch_tensor = torch.tensor(targets_df['targets'].values)

# printing out result
print(torch_tensor)

Output:

tensor([ 0.5827,  0.5881,  0.1543,  0.6815,  0.9400,  0.8683,  0.4289,
         0.5940,  0.6438,  0.7514], dtype=torch.float64)

Tested with Pytorch 0.4.0.

I hope this helps, if you have any further questions – just ask. :)

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement