This question already has answers here:
Python: how to merge two dataframes on a column by keeping the information of the first one?
(2个答案)
5个月前关闭。
我有一个不确定性列表,该不确定性对应于我将称为表1的n的特定值。我想将这些不确定性添加到一个综合的大型数据表(表2)中,该表按数字顺序并按n升序排列。 。如何将不确定性附加到正确的对应n值上?
我的第一个问题是,不确定性表是一个表,而不是一个数据框。我有单独的数组,但不确定如何组合成数据框。
xrow表示表1中以下'n'的数组,yrow表示相应的错误。
表1的摘录:
table2的摘录:
因此最终结果应如下所示:
即没有数据的字段仍为空白(例如,在上述情况下,n = 5)
我应该注意到表2中有很多数据(大约30k),而表1中有2.5k。
输出:
编辑:使用
(2个答案)
5个月前关闭。
我有一个不确定性列表,该不确定性对应于我将称为表1的n的特定值。我想将这些不确定性添加到一个综合的大型数据表(表2)中,该表按数字顺序并按n升序排列。 。如何将不确定性附加到正确的对应n值上?
我的第一个问题是,不确定性表是一个表,而不是一个数据框。我有单独的数组,但不确定如何组合成数据框。
table1 = Table([xrow,yrow])
xrow表示表1中以下'n'的数组,yrow表示相应的错误。
表1的摘录:
n error
1 0.0
2 0.00496
3 0.0096
4 0.00913
6 0.00555
8 0.00718
10 0.00707
table2的摘录:
n Energy g J error
0 1 0.000000 1 0 NaN
1 2 1827.486200 1 0 NaN
2 3 3626.681500 1 0 NaN
3 4 5396.686500 1 0 NaN
4 5 6250.149500 1 0 NaN
因此最终结果应如下所示:
n Energy g J error
0 1 0.000000 1 0 0
1 2 1827.486200 1 0 0.00496
2 3 3626.681500 1 0 0.0096
3 4 5396.686500 1 0 0.00913
4 5 6250.149500 1 0 NaN
即没有数据的字段仍为空白(例如,在上述情况下,n = 5)
我应该注意到表2中有很多数据(大约30k),而表1中有2.5k。
最佳答案
您可以这样使用.merge
:
import pandas as pd
from io import StringIO
table1 = pd.read_csv(StringIO("""
n error
1 0.0
2 0.00496
3 0.0096
4 0.00913
6 0.00555
8 0.00718
10 0.00707"""), sep=r"\s+")
table2 = pd.read_csv(StringIO("""
n Energy g J error
0 1 0.000000 1 0 NaN
1 2 1827.486200 1 0 NaN
2 3 3626.681500 1 0 NaN
3 4 5396.686500 1 0 NaN
4 5 6250.149500 1 0 NaN"""), sep=r"\s+")
table2["error"] = table1.merge(table2, on="n", how="right")["error_x"]
print(table2)
输出:
n Energy g J error
0 1 0.0000 1 0 0.00000
1 2 1827.4862 1 0 0.00496
2 3 3626.6815 1 0 0.00960
3 4 5396.6865 1 0 0.00913
4 5 6250.1495 1 0 NaN
编辑:使用
.map
应该会表现更好(请参阅评论):table2["error"] = table2["n"].map(table1.set_index('n')['error'])
关于python - 如何将与“n”相对应的值列表排序到按“n”排序的大表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56951190/
10-11 17:49