Mam ramkę danych o nazwie dc, z kolumną „SEX”, czyli wierszami 92201.
Kiedy próbuję podbić wszystkie jedynki, dc1num=dc[dc['SEX']==1]
nowa ramka danych tworzy len(dc1num)= 47614
wierszy.
Kiedy próbuję podzielić wszystkie 0, dc0num=dc[dc['SEX']==0]
, nowa ramka danych tworzy len(dc0num)= 40492
wierszy.
Kiedy próbuję podzielić jako ciąg wszystkie jedynki, dc1str=dc[dc['SEX']=='1'],
nowa ramka danych tworzy len(dc1str)= 2130
wierszy.
Kiedy próbuję podzielić jako ciąg wszystkie 0, dc0str=dc[dc['SEX']=='0'],
nowa ramka danych tworzy len(dc0str)= 1965
wierszy.
Wszystkie sumują dokładnie 47614+40492+2130+1965 = 92201
wierszy, taką samą liczbę w oryginalnym zbiorze danych. Więc oczywiście niektóre z nich mają kod 1, inne „1”; niektóre zera mają kod 0, inne „0”.
Z tych informacji wynika, że niektóre wiersze w tej kolumnie ramki danych są zakodowane jako liczby całkowite, a niektóre jako łańcuchy.
Chcę podzielić wszystkie jedynki i zera, tak więc
len(dc1)= 49,744
I
len(dc0)= 47,614
Próbowałem zrobić z nich wszystkie ciągi przez dc.SEX.apply(str0)
, a następnie wypróbowałem dc1=dc[dc['SEX']=='1']
i dc0=dc[dc['SEX']=='0']
, ale dało to taki sam wynik jak poprzednio. Nic nie zrobiłem. Jak mam rozwiązać ten problem?
5 odpowiedzi
Posługiwać się:
dc['SEX']=dc['SEX'].astype(int)
# or dc['SEX']=dc['SEX'].astype(float)
I wtedy:
dc1num=dc[dc['SEX']==1]
dc0num=dc[dc['SEX']==0]
Możesz także zrobić:
for i,group in df.groupby('SEX'):
print(group)
Zwykle możemy dokonać jednorazowej konwersji
df.SEX=pd.to_numeric(df.SEX)
Następnie możemy podzielić df
df1=df.query('SEX==1')
df2=df.query('SEX==0')
Aby przekonwertować dane do formatu łańcuchowego, spróbuj użyć poniższej funkcji; sposób, w jaki dzwonisz, nie działa.
df['A'] = df['A'].astype(str)
Sposób, który zadziała z liczbami niecałkowitymi, takimi jak:
df['SEX'] = pd.to_numeric(df['SEX'], errors='coerce')
Rozwiązanie 1: zamień wszystkie wartości w kolumnie na liczby całkowite
Df ['kol1'] = df ['kol1']. astype (int)
(OR)
Importuj pandy jako pd df ['col1'] = pd.to_numeric (df ['co11'])
Rozwiązanie 2: zamień wszystkie wartości w kolumnie na ciąg Przykład: df ['col1'] = df.col1.apply (str)
Jedno z powyższych rozwiązań powinno działać
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.