我正在和Pandas一起工作,我有一个数据框,我们可以在其中填充以下三个值中的一个:
ID_1 ID_2 ID_3
abc NaN NaN
NaN def NaN
NaN NaN ghi
NaN NaN jkl
NaN mno NaN
pqr NaN NaN
Run Code Online (Sandbox Code Playgroud)
我的目标是将这三列组合成我数据框中的新列:
ID_1 ID_2 ID_3 Combined_ID
abc NaN NaN abc
NaN def NaN def
NaN NaN ghi ghi
NaN NaN jkl jkl
NaN mno NaN mno
pqr NaN NaN pqr
Run Code Online (Sandbox Code Playgroud)
理想情况下,它只会找到第1列到第3列中存在的任何非空值,但我也可以连接,因为我们应该只为每行填充三个中的一个.谢谢.
df_note = pd.read_csv("NoteIds.csv")
df_note['Combined_ID'] = # ID_1 + ID_2 + ID_3
Run Code Online (Sandbox Code Playgroud) 我正在努力用最简单的方法在pandas中进行不区分大小写的合并.有没有办法在合并时做到这一点?我是否需要使用(?i)或带有ignorecase的正则表达式?在我的下面的代码片段中,我加入了一些国家,其中一个文件中可能是"美国"而另一个文件中的"美国",我只想将这个案例排除在外.谢谢!
import pandas as pd
import csv
import sys
env_path = sys.argv[1]
map_path = sys.argv[2]
df_address = pd.read_csv(env_path + "\\address.csv")
df_CountryMapping = pd.read_csv(map_path + "\CountryMapping.csv")
df_merged = df_address.merge(df_CountryMapping, left_on="Country", right_on="NAME", how="left")
....
Run Code Online (Sandbox Code Playgroud) 我有一个关于熊猫的问题,我有点困惑。我有一个包含很多不需要计算的数值的文件。他们中的大多数人都很好,但我有一对夫妇在末尾附加了“.0”。
这是一个示例输入文件:
Id1 Id2 Age Id3
"SN19602","1013743", "24", "23523"
"SN20077","2567897", "28", "24687"
Run Code Online (Sandbox Code Playgroud)
以及正在生成的输出:
Id1 Id2 Age Id3
"SN19602","1013743.0", "24", "23523"
"SN20077","2567897.0", "28", "24687"
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么有些但不是所有的数值都附加了 .0,如果有什么办法可以防止它?当我使用 CSV 输出执行流程的下一步时,这是一个问题。
我试图将数据框和列本身转换为字符串,但没有产生影响。理想情况下,我不想列出要转换的每一列,因为 a 有非常多的列,并且必须手动检查输出文件以确定哪些列附加了 .0 并为其编码。任何建议表示赞赏。
import pandas as pd
import csv
df_inputFile = pd.read_csv("InputFile.csv")
df_mappingFile = pd.read_csv("MappingFile.csv")
df_merged = df_inputFile.merge(df_mappingFile, left_on="Id", right_on="Id", how="left")
#This isn't affecting the output
df_merged.astype(str)
df_merged.to_csv("Output.csv", index=False, quoting=csv.QUOTE_ALL)
Run Code Online (Sandbox Code Playgroud)