【问题标题】:Create pandas dataframe from the combination of list and dictionary从列表和字典的组合创建熊猫数据框
【发布时间】:2022-01-11 18:09:16
【问题描述】:
col = ['c1_1', 'c1_2', 'c1_3', 'c1$1']
d = {4:'improvement needed',5:'very bad'}
如何使用pd.DataFrame(pandas库)得到如上图的输出
【问题讨论】:
标签:
python
python-3.x
pandas
dataframe
numpy
【解决方案1】:
import pandas as pd
col = ['c1_1', 'c1_2', 'c1_3', 'c1$1']
# use list comprehension to duplicate each item in col list
col = [col[i//2] for i in range(len(col)*2)]
d = {4:'improvement needed', 5:'very bad'}
df = pd.DataFrame({'final_col_name': col})
# duplicate each item in list of d keys
final_val_code = list(d.keys()) * int(df.shape[0] / 2) * int(df.shape[0] / 2)
df['final_val_code'] = final_val_code
# map d values to final_val_code col
df['final_val_label'] = df['final_val_code'].map(d)
print(df)
final_col_name final_val_code final_val_label
0 c1_1 4 improvement needed
1 c1_1 5 very bad
2 c1_2 4 improvement needed
3 c1_2 5 very bad
4 c1_3 4 improvement needed
5 c1_3 5 very bad
6 c1$1 4 improvement needed
7 c1$1 5 very bad
【解决方案2】:
感谢 Quang 的评论。最熊猫的做法会是这样的:
pd.DataFrame(col,columns=['final_col_name']).merge(pd.DataFrame(d.items(), columns=['final_val_code','final_val_label']),how = 'cross')