首页 > 解决方案 > Pandas 将 DataFrame2 ROW 附加到 DataFrame1 ROW

问题描述

我想将第二个 DataFrame (df2) 中的行附加到第一个 DataFrame (df1),具体取决于 df1 列中的“isValid”是否为 [T]rue。

我知道如何遍历 df1 列并搜索 True 值,但不知道如何轻松地从第二个 DataFrame 追加行。原来我的数据大约有1000行40列,所以我需要自动进行操作。

import pandas

df1 = pandas.read_csv('df1.csv', sep=';')
df2 = pandas.read_csv('df2.csv', sep=';')

print(df1.to_string(), '\n')
print(df2.to_string(), '\n')

columnSeriesObj = df1.iloc[:, 2]
n = 0
k = 0
for i in columnSeriesObj:
    if i == "T":
        print("True in row number", k)
        # APPEND n ROW from df2 to k ROW from df1
        n += 1
    k += 1

print('\n', df1.to_string())

以下是一些测试值:

df1.csv

DataA;DataB;isValid
1568;1104;F
1224;1213;F
1676;1246;F
1279;1489;T
1437;1890;T
1705;1007;F
1075;1720;F
1361;1983;F
1966;1751;F
1938;1564;F
1894;1684;F
1189;1803;F
1275;1138;F
1085;1748;T
1337;1775;T
1719;1975;F
1045;1187;F
1426;1757;F
1410;1363;F
1405;1025;F
1699;1873;F
1777;1464;F
1925;1310;T

df2.csv

Nr;X;Y;Z;A ;B;C
1;195;319;18;qwe;hjk;wsx
2;268;284;23;rty;zxc;edc
3;285;277;36;uio;vbn;rfv
4;143;369;34;asd;mlp;tgb
5;290;247;16;fgh;qaz;yhn

我想 df1 后追加看起来像这样(来自 Excel 的屏幕截图):

在此处输入图像描述

感谢您的任何建议!:D

标签: pythonpandasmergeappendrow

解决方案


您可以过滤df1isValid等于的索引值,然后使用过滤后的索引值T更新索引,最后使用:df2df1joindf1

m = df1['isValid'].eq('T')
idx = m[m].index[:len(df2)]
df1.join(df2.set_index(idx)).fillna('')

    DataA  DataB isValid Nr    X    Y   Z   A     B    C
0    1568   1104       F                                
1    1224   1213       F                                
2    1676   1246       F                                
3    1279   1489       T  1  195  319  18  qwe  hjk  wsx
4    1437   1890       T  2  268  284  23  rty  zxc  edc
5    1705   1007       F                                
6    1075   1720       F                                
7    1361   1983       F                                
8    1966   1751       F                                
9    1938   1564       F                                
10   1894   1684       F                                
11   1189   1803       F                                
12   1275   1138       F                                
13   1085   1748       T  3  285  277  36  uio  vbn  rfv
14   1337   1775       T  4  143  369  34  asd  mlp  tgb
15   1719   1975       F                                
16   1045   1187       F                                
17   1426   1757       F                                
18   1410   1363       F                                
19   1405   1025       F                                
20   1699   1873       F                                
21   1777   1464       F                                
22   1925   1310       T  5  290  247  16  fgh  qaz  yhn

推荐阅读