我有这样的 DF:
pd.DataFrame({'label':['A','test1: A','test2: A','B','test1: B','test3: B'],
'value': [1,2,3,4,5,6]})
label value
0 A 1
1 test1: A 2
2 test2: A 3
3 B 4
4 test1: B 5
5 test3: B 6
我需要转换成这样:
pd.DataFrame({'label':['A','B'],
'value': [1,4],
'test1:':[2,5],
'test2:':[3,None],
'test3:':[None,6]})
label value test1: test2: test3:
0 A 1 2 3.0 NaN
1 B 4 5 NaN 6.0
我需要保留唯一值的标签,并且如果数据中存在键,则将其合并到右侧。键可能会有所不同,并且一个值的名称可能不同。
请随意分享如何重命名问题,因为我找不到更好的方法来命名问题。
编辑: 部分this solution包含我需要的内容,但是没有合适的方法可以在标签列中添加表示键的列。理想情况下,需要类似带有 df 输入的函数。
最佳答案
将信息提取到两个数据框中并合并它们。
df2 = df[df['label'].str.contains('test')]
df3 = df2['label'].str.split(expand=True).rename(columns={0: "test", 1: "label"})
df3['value'] = df2['value']
df3 = df3.pivot_table(index='label', columns='test', values='value')
df2 = df[~df['label'].str.contains('test')]
df4 = pd.merge(df2, df3, on='label')
输出
label value test1: test2: test3:
0 A 1 2.0 3.0 NaN
1 B 4 5.0 NaN 6.0
关于python - 如何根据给定键 :value pair in the column in pandas? 的行创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62862344/