有没有办法根据条件在数据框中附加列的值?
Is there a way to append values of a column in a dataframe based on a condition?
我有两个数据集,df1
和 df2
,我想通过在 df1
的 type
列中附加值来在 df2
中创建第三列] 到 df2 中相应的 ids
。请注意 df2
中的 ids
可以重复,不应删除。数据帧和预期输出如下:
data1 = [[1283, 234, 8], [1313, 155, 4],
[1837, 987,6], [1443, 200, 0],
[1923, 224, 1], [1912, 247, 7],
[1176, 228, 2], [1865, 248, 6],
[1219, 265, 3], [1255, 862, 1]]
df1 = pd.DataFrame(data1, columns =['id', 'type', 'qty'])
print(df1)
id type qty
0 1283 234 8
1 1313 155 4
2 1837 987 6
3 1443 200 0
4 1923 224 1
5 1912 247 7
6 1176 228 2
7 1865 248 6
8 1219 265 3
9 1255 862 1
我有另一个数据框如下:
data2 =[[1313, 0], [1313,0],
[1443, 0], [1176,0],
[1912,1], [1912,1],
[1912, 1], [1283, 0],
[1837, 1], [1837, 1],
[1837, 1], [1923, 0],
[1865, 0], [1865, 0],
[1219, 1], [1255,1]]
df2 = pd.DataFrame(data2, columns =['id', 'class'])
print(df2)
id _class
0 1313 0
1 1313 0
2 1443 0
3 1176 0
4 1912 1
5 1912 1
6 1912 1
7 1283 0
8 1837 1
9 1837 1
10 1837 1
11 1923 0
12 1865 0
13 1865 0
14 1219 1
15 1255 1
我想将 df1
中的 'type'
值附加到它们对应的 id
以获得以下内容:
id _class type
0 1313 0 155
1 1313 0 155
2 1443 0 200
3 1176 0 228
4 1912 1 247
5 1912 1 247
6 1912 1 247
7 1283 0 234
8 1837 1 987
9 1837 1 987
10 1837 1 987
11 1923 0 224
12 1865 0 248
13 1865 0 248
14 1219 1 265
15 1255 1 862
df2.merge(df1, on="id").drop(["qty"],axis=1)
id class type
0 1313 0 155
1 1313 0 155
2 1443 0 200
3 1176 0 228
4 1912 1 247
5 1912 1 247
6 1912 1 247
7 1283 0 234
8 1837 1 987
9 1837 1 987
10 1837 1 987
11 1923 0 224
12 1865 0 248
13 1865 0 248
14 1219 1 265
15 1255 1 862
我有两个数据集,df1
和 df2
,我想通过在 df1
的 type
列中附加值来在 df2
中创建第三列] 到 df2 中相应的 ids
。请注意 df2
中的 ids
可以重复,不应删除。数据帧和预期输出如下:
data1 = [[1283, 234, 8], [1313, 155, 4],
[1837, 987,6], [1443, 200, 0],
[1923, 224, 1], [1912, 247, 7],
[1176, 228, 2], [1865, 248, 6],
[1219, 265, 3], [1255, 862, 1]]
df1 = pd.DataFrame(data1, columns =['id', 'type', 'qty'])
print(df1)
id type qty
0 1283 234 8
1 1313 155 4
2 1837 987 6
3 1443 200 0
4 1923 224 1
5 1912 247 7
6 1176 228 2
7 1865 248 6
8 1219 265 3
9 1255 862 1
我有另一个数据框如下:
data2 =[[1313, 0], [1313,0],
[1443, 0], [1176,0],
[1912,1], [1912,1],
[1912, 1], [1283, 0],
[1837, 1], [1837, 1],
[1837, 1], [1923, 0],
[1865, 0], [1865, 0],
[1219, 1], [1255,1]]
df2 = pd.DataFrame(data2, columns =['id', 'class'])
print(df2)
id _class
0 1313 0
1 1313 0
2 1443 0
3 1176 0
4 1912 1
5 1912 1
6 1912 1
7 1283 0
8 1837 1
9 1837 1
10 1837 1
11 1923 0
12 1865 0
13 1865 0
14 1219 1
15 1255 1
我想将 df1
中的 'type'
值附加到它们对应的 id
以获得以下内容:
id _class type
0 1313 0 155
1 1313 0 155
2 1443 0 200
3 1176 0 228
4 1912 1 247
5 1912 1 247
6 1912 1 247
7 1283 0 234
8 1837 1 987
9 1837 1 987
10 1837 1 987
11 1923 0 224
12 1865 0 248
13 1865 0 248
14 1219 1 265
15 1255 1 862
df2.merge(df1, on="id").drop(["qty"],axis=1)
id class type
0 1313 0 155
1 1313 0 155
2 1443 0 200
3 1176 0 228
4 1912 1 247
5 1912 1 247
6 1912 1 247
7 1283 0 234
8 1837 1 987
9 1837 1 987
10 1837 1 987
11 1923 0 224
12 1865 0 248
13 1865 0 248
14 1219 1 265
15 1255 1 862