我有一个带有一列的数据框,我想将其分为两列,其中一列标题为' fips'
,另一列为'row'
我的数据框df
如下所示:
row
0 00000 UNITED STATES
1 01000 ALABAMA
2 01001 Autauga County, AL
3 01003 Baldwin County, AL
4 01005 Barbour County, AL
我不知道如何使用df.row.str[:]
以达到分割行单元的目的。我可以df['fips'] = hello
用来添加一个新列,并用填充它hello
。有任何想法吗?
fips row
0 00000 UNITED STATES
1 01000 ALABAMA
2 01001 Autauga County, AL
3 01003 Baldwin County, AL
4 01005 Barbour County, AL
也许有更好的方法,但这是一种方法:
In [34]: import pandas as pd
In [35]: df
Out[35]:
row
0 00000 UNITED STATES
1 01000 ALABAMA
2 01001 Autauga County, AL
3 01003 Baldwin County, AL
4 01005 Barbour County, AL
In [36]: df = pd.DataFrame(df.row.str.split(' ',1).tolist(),
columns = ['flips','row'])
In [37]: df
Out[37]:
flips row
0 00000 UNITED STATES
1 01000 ALABAMA
2 01001 Autauga County, AL
3 01003 Baldwin County, AL
4 01005 Barbour County, AL
请注意,.tolist()会删除您拥有的所有索引,因此新的Dataframe将从0重新索引(在您的特定情况下这无关紧要)。
@Crashthatch-然后您可以再次添加就可以了
index = df.index
。如果一个单元格不能分裂怎么办?
AttributeError: 'DataFrame' object has no attribute 'row'
@Nisba:如果无法拆分任何单元格(例如,在这种情况下字符串不包含任何空格),它将仍然有效,但是拆分的一部分将为空。如果您在列中混合使用至少一个包含任何数字类型的单元格,则会发生其他情况。然后该
split
方法返回NaN,并且该tolist
方法将按原样返回此值(NaN),这将导致ValueError
(要解决此问题,可以在拆分之前将其转换为字符串类型)。我建议您自己尝试一下,这是最好的学习方法:-)