按列合并 csv 文件
Merge csv files by columns
嘿,我正在使用 python3,我想按列合并两个 csv 文件,我做对了,但我希望合并将仅查看数字后的两位数,然后合并。
例如,如果我有这两个 csv
df1:
X1 Y1 Z1
1.232 2.271 6
3.527 5.628 7
df2:
X2 Y2 Z2
1.231 2.275 6
3.526 5.624 7
当前解决方案不会按列 X 和 Y 合并,因为数字后的第三位数字不同,我希望合并命令只查看数字后的两位数并按它们合并。
这是我目前的解决方案:
from pandas import merge
df1 = merge(df1, df2, left_on=['X1', 'Y1'], right_on=['X2', 'Y2'])
所以从 thia 解决方案中,两个数据帧不会合并,我希望它们合并并忽略数字后的第三个数字。
使用 np.floor
表示 2 位数字后的切割值:
df1 = pd.merge(df1.assign(x11 = np.floor(df1['X1'], 2),
y11 = np.floor(df1['Y1'], 2)),
df2.assign(x22 = np.floor(df1['X2'], 2),
y22 = np.floor(df1['Y2'], 2)), left_on=['x11', 'y11'], right_on=['x22', 'y22']
或尽可能使用 Series.round
(值是四舍五入的,而不是截断的):
df1 = pd.merge(df1.assign(x11 = df1['X1'].round(2),
y11 = df1['Y1'].round(2)),
df2.assign(x22 = df1['X2'].round(2),
y22 = df1['Y2'].round(2)), left_on=['x11', 'y11'], right_on=['x22', 'y22'])
或使用多个 100
并转换为整数以获得切割值:
df1 = pd.merge(df1.assign(x11 = df1['X1'].mul(100).astype(int),
y11 = df1['Y1'].mul(100).astype(int)),
df2.assign(x22 = df1['X2'].mul(100).astype(int)),
y22 = df1['Y2'].mul(100).astype(int)), left_on=['x11', 'y11'], right_on=['x22', 'y22'])
嘿,我正在使用 python3,我想按列合并两个 csv 文件,我做对了,但我希望合并将仅查看数字后的两位数,然后合并。
例如,如果我有这两个 csv
df1:
X1 Y1 Z1
1.232 2.271 6
3.527 5.628 7
df2:
X2 Y2 Z2
1.231 2.275 6
3.526 5.624 7
当前解决方案不会按列 X 和 Y 合并,因为数字后的第三位数字不同,我希望合并命令只查看数字后的两位数并按它们合并。
这是我目前的解决方案:
from pandas import merge
df1 = merge(df1, df2, left_on=['X1', 'Y1'], right_on=['X2', 'Y2'])
所以从 thia 解决方案中,两个数据帧不会合并,我希望它们合并并忽略数字后的第三个数字。
使用 np.floor
表示 2 位数字后的切割值:
df1 = pd.merge(df1.assign(x11 = np.floor(df1['X1'], 2),
y11 = np.floor(df1['Y1'], 2)),
df2.assign(x22 = np.floor(df1['X2'], 2),
y22 = np.floor(df1['Y2'], 2)), left_on=['x11', 'y11'], right_on=['x22', 'y22']
或尽可能使用 Series.round
(值是四舍五入的,而不是截断的):
df1 = pd.merge(df1.assign(x11 = df1['X1'].round(2),
y11 = df1['Y1'].round(2)),
df2.assign(x22 = df1['X2'].round(2),
y22 = df1['Y2'].round(2)), left_on=['x11', 'y11'], right_on=['x22', 'y22'])
或使用多个 100
并转换为整数以获得切割值:
df1 = pd.merge(df1.assign(x11 = df1['X1'].mul(100).astype(int),
y11 = df1['Y1'].mul(100).astype(int)),
df2.assign(x22 = df1['X2'].mul(100).astype(int)),
y22 = df1['Y2'].mul(100).astype(int)), left_on=['x11', 'y11'], right_on=['x22', 'y22'])