将熊猫数据列合并为一列

时间:2021-06-24 15:18:03

标签: python pandas

我有 3 列 ID,我想将它们合并为一个列,如下例所示。这里的目标是简单地用 ID1 或 ID2 中的值替换主列中的所有 0,并将分数列保持在最右侧。

注意,Main ID 列也有第 3 行已经有值的情况,在这种情况下,什么都不用做。最终尝试获得所需输出中所示的单列。尝试使用一些迭代循环,但它不是 Pythonic 方法。

数据表

Main ID ID_1    ID_2   SCORE
0         0    121231   212 
0       54453   0       199
12123   12123   0       185
343434    0    343434   34
2121      0     0       66
0         0     11      565

期望的输出:

MAIN ID  SCORE
121231    212 
54453     199
12123     185
343434    34
2121      66
11        565

更新,应用 bfill 方法将所有“MAIN_ID”数字更改为科学记数法,例如:3.43559e+06

2 个答案:

答案 0 :(得分:1)

bfill试试mask

out = df.mask(df.eq(0)).bfill(1)[['Main ID']]

答案 1 :(得分:1)

这个对我有用,它很简单但很实用:D

import pandas as pd

d = {'MAIN ID' : [0,0,12123,343434,2121,0], 'ID_1': [0,54453,12123,0,0,0],'ID_2':[121231,0,0,343434,0,11]}
df = pd.DataFrame(data=d)

for i in range(len(df)):
    if df.iloc[i]['MAIN ID'] == 0:
        if df.iloc[i]['ID_1'] != 0:
            df.iloc[i]['MAIN ID'] = df.iloc[i]['ID_1']
        else:
            df.iloc[i]['MAIN ID'] = df.iloc[i]['ID_2']

df = df.drop(['ID_1', 'ID_2'], axis=1)