获取列表列表,拆分列表,然后转换为datafram

2024-04-24 10:19:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试获取一个列表,该列表如下所示(我们称之为“All”):

[['Albany County, Wyoming', '56', '001'],
 ['Big Horn County, Wyoming', '56', '003'],
 ['Campbell County, Wyoming', '56', '005'],...

并将其转换成如下所示的数据帧:

COUNTY            STATE     FIPS1 FIPS2
'Albany County'   'Wyoming'  '56'  '001'
'Big Horn County' 'Wyoming'  '56'  '003'
'Campbell County' 'Wyoming'  '56'  '005'

到目前为止,我的清单是这样的:

for index, line in enumerate(All):
    All[index] = line[0].split(','), line[1:]

pd.DataFrame(All)

但这又回来了:

                            0          1
0        [Albany County,  Wyoming]  [56, 001]
1      [Big Horn County,  Wyoming]  [56, 003]
2      [Campbell County,  Wyoming]  [56, 005]

提前感谢您的帮助!你知道吗


Tags: 数据列表indexlineallstatecampbellbig
2条回答

您也可以尝试以下方法:

lst = [['Albany County, Wyoming', '56', '001'],
 ['Big Horn County, Wyoming', '56', '003'],
 ['Campbell County, Wyoming', '56', '005']]

df = pd.DataFrame(lst)
df.columns = ['COUNTY_STATE', 'FIPS1', 'FIPS2']
print(df)
               COUNTY_STATE FIPS1 FIPS2
0    Albany County, Wyoming    56   001
1  Big Horn County, Wyoming    56   003
2  Campbell County, Wyoming    56   005

ALL = pd.DataFrame(df['COUNTY_STATE'].str.split(',').tolist(), columns = ['COUNTY','STATE'])
ALL[['FIPS1', 'FIPS2']] = df[['FIPS1', 'FIPS2']]
print(ALL)
            COUNTY     STATE FIPS1 FIPS2
0    Albany County   Wyoming    56   001
1  Big Horn County   Wyoming    56   003
2  Campbell County   Wyoming    56   005
All = [
    ['Albany County, Wyoming', '56', '001'],
    ['Big Horn County, Wyoming', '56', '003'],
    ['Campbell County, Wyoming', '56', '005']
]

pd.DataFrame(
    [line[0].split(', ') + line[1:] for line in All],
    columns=['COUNTY', 'STATE', 'FIPS1', 'FIPS2']
)

            COUNTY    STATE FIPS1 FIPS2
0    Albany County  Wyoming    56   001
1  Big Horn County  Wyoming    56   003
2  Campbell County  Wyoming    56   005

或者

df = pd.DataFrame(All, columns=['COUNTY, STATE', 'FIPS1', 'FIPS2'])

col = 'COUNTY, STATE'
df[col].str.extract(
    '(?P<COUNTY>.*), (?P<STATE>.*)', expand=True
).join(df.drop(col, 1))

            COUNTY    STATE FIPS1 FIPS2
0    Albany County  Wyoming    56   001
1  Big Horn County  Wyoming    56   003
2  Campbell County  Wyoming    56   005

相关问题 更多 >