嗨,我有一个整洁格式的数据格式,如
import pandas as pd
df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c',3: 'a', 4: 'b', 5: 'c'},
'B': {0: 1, 1: 3, 2: 5,3: 1, 4: 3, 5: 5},
'C': {0: 2, 1: 4, 2: 6,3: 2, 4: 4, 5: 6}})在这种情况下,我做了一个函数,将'a‘列中的代码'A’、'b‘、'C’映射到'B‘和'c’列中的可观测值。
功能是
def vectorize(df):
indexdict={}
for code in df['A'].unique():
indexdict.update({'A':code})
transpose = df.T
value_dict ={}
for item in transpose.iloc[1]:
for value in transpose.iloc[2]:
value_dict.update({item:value})
indexdict.update(value_dict)
indexdict = {str(key):value for key,value in indexdict.items()}
df = pd.DataFrame(indexdict,index=[0])
df.set_index('A', inplace=True)
return df我想要一个带可观测值的a,b,c码的数据。但是,当我执行这个函数时,只返回最后一个条目。像这样
我做错了什么,有没有更好的方法来做这件事?输出是我想要的,但不只是一个值,而是需要a、b和c的所有值。
谢谢
发布于 2022-01-14 10:02:39
我想我是用@natnij的解算出来的
df.pivot_table(index='A',columns='B',values='C',aggfunc=lambda x: ' '.join(x))谢谢
https://stackoverflow.com/questions/70708241
复制相似问题