我有这个数据帧有三列(ID
,key
和word
)如何修改数据帧,使每行存储其重复行的所有数据?
ID key word
0 1 A Apple
1 1 B Bug
2 2 C Cat
3 3 D Dog
4 3 E Exogenous
5 3 E Egg
我想创造更多的key
和word
列-as necessary-将数据存储在key
和word
列时,有与重复行IDs
这是输出的一个片段
ID key_0 key_1 word_0 word_1
0 1 A B Apple Bug
注:在上面的输出中,ID
#1
在数据帧出现过两次,所以与重复ID
相关的"key"
值"B"
将存储在新列"key_1"
。在复制ID
#1
中找到的字Bug
也将被存储在新列word_1
中。
完整的输出应该像下面这样:在完整的输出
ID key_0 key_1 key_2 word_0 word_1 word_2
0 1 A B NaN Apple Bug NaN
1 2 C NaN NaN Cat NaN NaN
2 3 D E E Dog Exogenous Egg
通知,ID
#3
已经重复三次。第二个重复"E"
的key
将存储在"key_1"
列下,第三个重复"E"
将存储在新列"key_2"
中。这适用于同一个mannar中的文字"Exogenous"
和"Egg"
。
我发现Alex's解决方案是有用的,但它仅适用于该key
列:
df.groupby('ID')['key'].apply(
lambda s: pd.Series(s.values, index=['key_%s' % i for i in range(s.shape[0])])).unstack(-1)
任何想法,我怎样才能使lambda函数适用于这两个key
和word
列?
谢谢
这给出了一个错误.. 。TypeError:不能连接非NDFrame对象@Gaurav Dhama – MEhsan
对不起,我忘记了unique()给了一个ndarray不是一个数据框。已经改变了答案来反映这一点。 –