首页 > 解决方案 > 将pandas DataFrame中的元组旋转到特定的行元素

问题描述

我正在尝试将一个简单的元组 [2] 数据集转换为带有熊猫的可用格式。我将使用用户数据集的示例。

我的输入如下所示:

properties, value
username, 1 
email, 2 
created, 3 
username, 4 
email, 5 
created, 6

每次“用户名”出现在第一列时,下面的元组都属于该用户。我正在尝试将其转换为一种格式,其中每个用户都列在一行中,属性列在列中。

期望的输出:

username, email, created
1, 2, 3
4, 5, 6

我将输入文件加载到熊猫数据框df中:

with open('input.csv', encoding='utf-16') as f:
    df = pd.read_csv(f, sep=" :", engine='python', header=None, parse_dates=True)

然后我想我会使用pivot函数,但我收到以下错误,我不确定如何解决:

ValueError: Index contains duplicate entries, cannot reshape

任何人都可以帮助我朝着正确的方向前进吗?

标签: pythonpython-3.xpandas

解决方案


首先,假设 username、email 和 created 是列表对象。每当创建用户时,都会满足每个列表的相同索引。

username = list()
email = list()
created = list()

# Add some elements for first user
username.append('1')
email.append('2')
created.append('3')

# Add some elements for second user
username.append('4')
email.append('5')
created.append('6')

然后,您需要做的就是使用列表名称创建列并正确放置数据。

df = pd.DataFrame(list(zip(username, email, created)), columns=['Username', 'Email', 'Created'])

# Printing without indexes
print(df.to_string(index=False))

打印 DataFrame 的结果将是:

Username Email Created
       1      2       3
       4      5       6

推荐阅读