df['direction']
ist die Anzahl der Windrichtungen im Bereich von 1-16. Ich möchte es in 360-degree system
konvertieren. #1
Richtung ist 90
und #2
ist 67.5
, sie laufen im Uhrzeigersinn.
Ich kann df['degree'] = 90-(df.direction-1)*22.5
machen, aber dies würde negative value
erzeugen. Sie können die Ausgabe unten sehen ] 1
Aber ich weiß nicht, wie ich das conditional
hier für df['degree']<0, then + 360
verwenden soll. Wie kann ich das machen?
5 Antworten
df['degree'] = df['degree'].apply(lambda x: x + 360 if x < 0 else x)
Verwenden Sie df [Grad] <0 als Bedingungsanweisung:
df[degree] += (df[degree]<0) * 360
Ein kurzer Weg, um Ihr Problem zu lösen, ist die Verwendung von Modulo.
df['degree'] = (90-(df.direction-1)*22.5)%360
Sie können .loc
für die bedingte Indizierung verwenden
df.loc[ df.degree < 0 , 'degree'] += 360
Wenn ich das richtig verstehe, möchten Sie Folgendes:
In [36]:
df = pd.DataFrame({'direction':np.random.randint(1,17,20)})
df
Out[36]:
direction
0 13
1 12
2 4
3 5
4 16
5 6
6 3
7 16
8 12
9 2
10 14
11 13
12 8
13 9
14 8
15 12
16 9
17 2
18 7
19 8
In [37]:
df['degrees'] = (90 - (df['direction'] -1) * 22.5)
df.loc[df['degrees']<0,'degrees'] += 360.0
df
Out[37]:
direction degrees
0 13 180.0
1 12 202.5
2 4 22.5
3 5 0.0
4 16 112.5
5 6 337.5
6 3 45.0
7 16 112.5
8 12 202.5
9 2 67.5
10 14 157.5
11 13 180.0
12 8 292.5
13 9 270.0
14 8 292.5
15 12 202.5
16 9 270.0
17 2 67.5
18 7 315.0
19 8 292.5
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.