将中的列条目转换为行

2024-09-26 17:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下的数据集,它重复每个州的描述(州、接种人数、接种人口百分比)。我想使所有描述条目成为列标题

当前列标题=说明、数据

所需列标题=状态、接种人数、接种人口百分比、数据

有什么办法吗

这是我目前的代码:

import pandas as pd
import numpy as np
df = pd.read_csv("vaccinate_pct.csv",header=1,na_values=" NaN",index_col=False)
df=df[['Description','Data']]
df=df.dropna(axis=0)
df
Description Data
0   state   Vermont
1   num people vaccinated   424,323
2   percentage of population vaccinated 68
3   state   Connecticut
4   num people vaccinated   2,360,741
... ... ...
148 num people vaccinated   1,891,063
149 percentage of population vaccinated 38.57
150 state   Mississippi
151 num people vaccinated   1,144,438
152 percentage of population vaccinated 38

Tags: of数据import标题dfaspeoplenum
2条回答

您可以通过旋转数据帧来实现这一点,但只有在设置了索引,以便为每组3个值重复索引之后。否则,熊猫将填满一堆NaN

import pandas as pd
import numpy as np

df = pd.DataFrame({'Description': ['state', 'num people vaccinated', '% of pop vaccinated',
                                   'state', 'num people vaccinated', '% of pop vaccinated'],
                   'Data': ['Vermont', '424323', '68', 'Ohio', '6145359', '52']})
print(df)

# re-index the dataframe to [0, 0, 0, 1, 1, 1, ...]
idx_vals = list(range(0, int(len(df)/3)))
df.index = list(np.repeat(idx_vals, 3))
print(df)

df2 = df.pivot( columns='Description', values='Data')
print(df2)

请注意,只有在每个状态正好有3个值的情况下,这才有效

如果这是你的意思:

您的df:

enter image description here

解决方案:

df_new = pd.DataFrame()
description_unique_values = df.Description.unique()
df_dict = {name: df.loc[df['Description'] == name]['Data'] for name in description_unique_values}
for v in description_unique_values:
    df_new[v] = df_dict[v].reset_index(drop=True)

结果:

enter image description here

相关问题 更多 >

    热门问题