Ben bir csv aşağıdaki veriler:Grup değerleri ve Python
c1 c2
1 2,3
3 4,5
4 6
:
c1 c2
1 2
1 3
3 4
3 5
4 6
Ne yapmak gerektiğini verileri işlemek ve aşağıdaki çıkışına sahip olmaktır Bu pandalarla mümkün mü?
Teşekkür
Ben bir csv aşağıdaki veriler:Grup değerleri ve Python
c1 c2
1 2,3
3 4,5
4 6
:
c1 c2
1 2
1 3
3 4
3 5
4 6
Ne yapmak gerektiğini verileri işlemek ve aşağıdaki çıkışına sahip olmaktır Bu pandalarla mümkün mü?
Teşekkür
Önce astype
tarafından string
sütun c2
dönüştürmek ve daha sonra groupby
apply
join
ile yapabilirsiniz. reset_index
Son:
df['c2'] = df['c2'].astype(str)
print df.groupby('c1')['c2'].apply(','.join).reset_index()
c1 c2
0 1 2,3
1 3 4,5
2 4 6
Eğer drop_duplicates
gerekirse:
print df
c1 c2
0 1 2
1 1 3
2 1 2
3 1 3
4 3 4
5 3 5
6 4 6
df['c2'] = df['c2'].astype(str)
df = df.groupby('c1')['c2'].apply(lambda x: ','.join(x.drop_duplicates())).reset_index()
print df
c1 c2
0 1 2,3
1 3 4,5
2 4 6
sütunda c2
değerlerin uzunluğu tür DataFrame
gerekiyorsa, str.len
ve sort_values
kullanın. Son Eğer drop
kolon sort
edebilirsiniz:
print df
c1 c2
0 1 4
1 1 5
2 4 6
3 2 7
4 2 3
5 2 2
6 2 3
df['c2'] = df['c2'].astype(str)
df = df.groupby('c1')['c2'].apply(lambda x: ','.join(x.drop_duplicates())).reset_index()
df['sort'] = df['c2'].str.len()
df = df.sort_values('sort')
df = df.drop('sort',axis=1)
print df
c1 c2
2 4 6
0 1 4,5
1 2 7,3,2
print df.reset_index(drop=True)
c1 c2
0 4 6
1 1 4,5
2 2 7,3,2
Teşekkürler! Aradığım şey bu! Sadece bir soru daha. "C2" sütunları bana bazen "2,2,2,2,3,3,3,3" gibi bir şey veren tekrarlanan değerlere sahip olabilir. Yalnızca benzersiz değerleri nasıl alabilirim ve çoğaltmasın? – estemendoza
Lütfen düzenlenmiş cevabı kontrol edin. – jezrael
Çok teşekkür ederim! – estemendoza
'2,3' bir liste veya dize nedir? – Zero
Sadece bir dize. Teşekkürler – estemendoza
sadece df.groupby ('c1') ['c2'] 'yi uygulayın. Uygulayın (', '. Join) ' – EdChum