操纵 pandas 系列 - 列中的空行
Manipulating pandas series - empty rows in a column
对于我认为是基本数据框/系列选择问题,我提前表示歉意,但我是新手,有点卡住了。
我有以下数据:
seas off
2000 ARI 0.569369
ATL 0.553398
BAL 0.554404
BUF 0.571429
CAR 0.600000
CHI 0.560886
CIN 0.454945
CLE 0.573196
DAL 0.572707
DEN 0.612850
DET 0.550696
然后 'seas' 在 2001 年重复,在 2015 年重复。FWIW,当我尝试 df['off']
它没有 return "off" 列。
无论如何,我想做的基本上是为每个数字创建一个密钥。为此,我想为每一行复制年份,然后将其添加到 "off" 以获得密钥。所以如下:
seas off value key
2000 ARI 0.569369 2000ARI
2000 ATL 0.553398 2000ATL
2000 BAL 0.554404 2000BAL
2000 BUF 0.571429 2000BUF
2000 CAR 0.600000 2000CAR
...
...
2001 CHI 0.560886 2001CHI
2001 CIN 0.454945 2001CIN
2001 CLE 0.573196 2001CLE
2001 DAL 0.572707 2001DAL
2001 DEN 0.612850 2001DEN
2001 DET 0.550696 2001DET
非常感谢帮助...
约翰
我的猜测是您没有 DataFrame,而是带有 MultiIndex 的 Series。
import io
import pandas as pd
data = io.StringIO('''\
seas off value
2000 ARI 0.569369
2000 ATL 0.553398
2000 BAL 0.554404
2000 BUF 0.571429
2000 CAR 0.600000
2000 CHI 0.560886
2000 CIN 0.454945
2000 CLE 0.573196
2000 DAL 0.572707
2000 DEN 0.612850
2000 DET 0.550696
''')
df = pd.read_csv(data, delim_whitespace=True).set_index(['seas', 'off']).squeeze()
在这种情况下,您可以执行以下操作。首先,将 seas
和 off
放入 DataFrame 的列中:
df = df.reset_index()
然后通过连接 seas
和 off
列来创建列 key
:
df['key'] = df['seas'].astype(str) + df['off']
最后,将 seas
和 off
发送回索引:
df = df.set_index(['seas', 'off'])
输出:
value key
seas off
2000 ARI 0.569369 2000ARI
ATL 0.553398 2000ATL
BAL 0.554404 2000BAL
BUF 0.571429 2000BUF
CAR 0.600000 2000CAR
CHI 0.560886 2000CHI
CIN 0.454945 2000CIN
CLE 0.573196 2000CLE
DAL 0.572707 2000DAL
DEN 0.612850 2000DEN
DET 0.550696 2000DET
对于我认为是基本数据框/系列选择问题,我提前表示歉意,但我是新手,有点卡住了。
我有以下数据:
seas off
2000 ARI 0.569369
ATL 0.553398
BAL 0.554404
BUF 0.571429
CAR 0.600000
CHI 0.560886
CIN 0.454945
CLE 0.573196
DAL 0.572707
DEN 0.612850
DET 0.550696
然后 'seas' 在 2001 年重复,在 2015 年重复。FWIW,当我尝试 df['off']
它没有 return "off" 列。
无论如何,我想做的基本上是为每个数字创建一个密钥。为此,我想为每一行复制年份,然后将其添加到 "off" 以获得密钥。所以如下:
seas off value key
2000 ARI 0.569369 2000ARI
2000 ATL 0.553398 2000ATL
2000 BAL 0.554404 2000BAL
2000 BUF 0.571429 2000BUF
2000 CAR 0.600000 2000CAR
...
...
2001 CHI 0.560886 2001CHI
2001 CIN 0.454945 2001CIN
2001 CLE 0.573196 2001CLE
2001 DAL 0.572707 2001DAL
2001 DEN 0.612850 2001DEN
2001 DET 0.550696 2001DET
非常感谢帮助...
约翰
我的猜测是您没有 DataFrame,而是带有 MultiIndex 的 Series。
import io
import pandas as pd
data = io.StringIO('''\
seas off value
2000 ARI 0.569369
2000 ATL 0.553398
2000 BAL 0.554404
2000 BUF 0.571429
2000 CAR 0.600000
2000 CHI 0.560886
2000 CIN 0.454945
2000 CLE 0.573196
2000 DAL 0.572707
2000 DEN 0.612850
2000 DET 0.550696
''')
df = pd.read_csv(data, delim_whitespace=True).set_index(['seas', 'off']).squeeze()
在这种情况下,您可以执行以下操作。首先,将 seas
和 off
放入 DataFrame 的列中:
df = df.reset_index()
然后通过连接 seas
和 off
列来创建列 key
:
df['key'] = df['seas'].astype(str) + df['off']
最后,将 seas
和 off
发送回索引:
df = df.set_index(['seas', 'off'])
输出:
value key
seas off
2000 ARI 0.569369 2000ARI
ATL 0.553398 2000ATL
BAL 0.554404 2000BAL
BUF 0.571429 2000BUF
CAR 0.600000 2000CAR
CHI 0.560886 2000CHI
CIN 0.454945 2000CIN
CLE 0.573196 2000CLE
DAL 0.572707 2000DAL
DEN 0.612850 2000DEN
DET 0.550696 2000DET