合并 Pandas 数据框中的 2 列,用前一个值填充 NaN [重复]
Posted
技术标签:
【中文标题】合并 Pandas 数据框中的 2 列,用前一个值填充 NaN [重复]【英文标题】:merge 2 columns in pandas dataframe filling the NaNs with the previous value [duplicate] 【发布时间】:2017-10-16 20:25:07 【问题描述】:我有一个数据框:
State RegionName
0 Alabama Alabama
1 NaN Auburn
2 NaN Florence
3 NaN Jacksonville
4 NaN Livingston
5 NaN Montevallo
6 NaN Troy
7 NaN Tuscaloosa
8 NaN Tuskegee
9 Alaska Alaska
10 NaN Fairbanks
11 Arizona Arizona
12 NaN Flagstaff
13 NaN Tempe
14 NaN Tucson
如何退货
DataFrame([["Alabama", "Auburn"],
["Alabama", "Florence"], .
..,
["Alaska", "Fairbanks"],
["Arizona", "Flagstaff"],
...], columns=["State", "RegionName"])
所以所有值都很好地合并了?
我曾尝试过:df['State'] = df['State'].apply(lambda x: df['RegionName'])
,但它缺少在新的 RegionName 启动时为 RegionName 分配新 State 的逻辑。
【问题讨论】:
【参考方案1】:你可以试试fillna。
df=pd.DataFrame([["Alabama", "Auburn"],
[np.nan, "Florence"],
[np.nan, "Fairbanks"],
["Arizona", "Flagstaff"]], columns=["State", "RegionName"])
df
Out[94]:
State RegionName
0 Alabama Auburn
1 NaN Florence
2 NaN Fairbanks
3 Arizona Flagstaff
df.fillna(method='ffill')
Out[95]:
State RegionName
0 Alabama Auburn
1 Alabama Florence
2 Alabama Fairbanks
【讨论】:
【参考方案2】:需要ffill
:
df['State'] = df['State'].ffill()
print (df)
State RegionName
0 Alabama Alabama
1 Alabama Auburn
2 Alabama Florence
3 Alabama Jacksonville
4 Alabama Livingston
5 Alabama Montevallo
6 Alabama Troy
7 Alabama Tuscaloosa
8 Alabama Tuskegee
9 Alaska Alaska
10 Alaska Fairbanks
11 Arizona Arizona
12 Arizona Flagstaff
13 Arizona Tempe
14 Arizona Tucson
【讨论】:
在我看来,这是第一个以.ffill()
为答案的问题。
@DSM - 我觉得它很棒;)
我想我的意思是以前可能已经问过一个答案如此简单的问题,而不是再次回答它,我们应该找到骗子。当我得到一秒钟的时间时,我可以自己找到一个好的目标,如果没有其他人还没有。
你真的很亲密df1 = df[df['State'] != df['RegionName']]
然后使用参数drop=True
- df1 = df[df['State'] != df['RegionName']].reset_index(drop=True)
以上是关于合并 Pandas 数据框中的 2 列,用前一个值填充 NaN [重复]的主要内容,如果未能解决你的问题,请参考以下文章