希望是一个来自熊猫新手的非常简单的问题
如何使数据帧中一列的值等于另一列的值?替换每行中的值。没有条件等
上下文:
我有两个CSV,分别加载到数据帧“a”和数据帧“b”中
这些CSV基本上是相同的,除了“a”有一个字段从另一个进程不正确地结转-浮点被四舍五入为整数。不是我的剧本,不能影响它,我现在只有CSV
实际上,在合并的数据帧中,我可能有2mil行和大约60-70列——因此,如果可以通过它们的标题来寻址这些列(在本例中是Col1和xyz_Col1),那肯定会有帮助
我已经加入了CSV的公共字段,因此现在我有了一个场景,其中我有一个数据帧,可以用以下内容表示:
+--------+------+--------+------------+----------+----------+
| CellID | Col1 | Col2 | xyz_CellID | xyz_Col1 | xyz_Col2 |
+--------+------+--------+------------+----------+----------+
| 1 | 0 | apple | 1 | 0.23 | apple |
| 2 | 0 | orange | 2 | 0.45 | orange |
| 3 | 1 | banana | 3 | 0.68 | banana |
+--------+------+--------+------------+----------+----------+
结果应为Col1=xyz_Col1:
+--------+------+--------+------------+----------+----------+
| CellID | Col1 | Col2 | xyz_CellID | xyz_Col1 | xyz_Col2 |
+--------+------+--------+------------+----------+----------+
| 1 | 0.23 | apple | 1 | 0.23 | apple |
| 2 | 0.45 | orange | 2 | 0.45 | orange |
| 3 | 0.68 | banana | 3 | 0.68 | banana |
+--------+------+--------+------------+----------+----------+
到目前为止,我在代码中拥有:
import pandas as pd
a = pd.read_csv('csv1.csv')
b = pd.read_csv('csv2.csv')
#b = b.dropna(axis=1) drop any unnamed fields
#defind 'b' cols by adding an xyz_ prefix as xyz is unique
b = b.add_prefix('xyz_')
#Join the dataframes into a new dataframe named merged
merged = pd.merge(a, b, left_on='Col1', right_on='xyz_Col1')
merged.head(5)
#This is where the xyz_Col1 to Col1 code goes...
#drop unwanted cols
merged = merged[merged.columns.drop(list(merged.filter(regex='xyz')))]
#output to file
merged.to_csv("output.csv", index=False)
谢谢
或
相关问题 更多 >
编程相关推荐