假设我有一个简单的 Pandas DataFrame,其中一列包含国家/地区名称,另一列包含一些值。例如:
# Import Python Libraries
import numpy as np
import pandas as pd
# Create Sample DataFrame
df = pd.DataFrame(data={'Country': ['United States','United States','United States','United States', \
'United States','United States','United States','United States', \
'United States','United States','United States','United States', \
'Canada','Canada','Canada','Canada','Canada','Canada','Mexico', \
'Mexico','Mexico','Mexico','England','England','England','England', \
'England','England','England','England','England','England','England', \
'England','England','England','France','France','France','Spain','Germany', \
'Germany','Germany','Germany','Germany','Germany','Germany','Germany', \
'Germany','Germany'], 'Value': np.random.randint(1000, size=50)})
产生:
print(df.head())
Index Country Value
0 United States 943
1 United States 567
2 United States 534
3 United States 700
4 United States 470
我的问题是,在 Python 中将此 DataFrame 转换为每个国家/地区都有自己的列并且该国家/地区的所有值都列在该列中的最简单方法是什么?换句话说,我如何轻松创建一个 DataFrame,其中列数是“Country”列中国家的唯一计数,并且每列的长度将根据相应国家/地区在原始 DataFrame 中出现的次数而有所不同?
以下是提供解决方案的示例代码:
# Store Unique Country Names in Variable
columns = df['Country'].unique()
# Create Individual Country DataFrames
df_0 = df[df['Country'] == columns[0]]['Value'].values.tolist()
df_1 = df[df['Country'] == columns[1]]['Value'].values.tolist()
df_2 = df[df['Country'] == columns[2]]['Value'].values.tolist()
df_3 = df[df['Country'] == columns[3]]['Value'].values.tolist()
df_4 = df[df['Country'] == columns[4]]['Value'].values.tolist()
df_5 = df[df['Country'] == columns[5]]['Value'].values.tolist()
df_6 = df[df['Country'] == columns[6]]['Value'].values.tolist()
虽然上面的代码有效,但对于较大的数据集,它显然不是一个站得住脚的解决方案。从原始 DataFrame 生成此结果的最有效方法是什么?
翻过高山走不出你
慕森王
相关分类