【问题标题】: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库)得到如上图的输出

【问题讨论】:

  • how='cross'合并。
  • 感谢@QuangHoang。这是最聪明的方法。

标签: 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-14
      • 2019-11-12
      • 2018-02-26
      • 2016-01-14
      • 1970-01-01
      • 2016-04-21
      • 2014-11-22
      相关资源
      最近更新 更多