我试图使用存储在txt文件中的大量数据构建数据帧。但是,我没有构造数据,所以我不得不处理其中包含的令人沮丧的格式。我无法让我的代码在大数据中工作(这样做几乎使我的计算机崩溃),所以设置一个更小的数据帧,如下所示:
'Value' ID_1 ID_2
0 11122222 ABC42123 33333
1 21219299 YOF21233 88821
2 00022011 ERE00091 23124
3 75643311;21233332 ROB21288 99421
4 12412421 POW94277 12231;33221
5 54221721 IRS21231;YOU28137 13123
我的挫折在于数据中使用了分号。数据是用来表示id的,但是多个id被分配给多个变量。我想重复这些行,以便在数据中搜索各个ID,并得到一个如下所示的datatable:
^{pr2}$重新编制索引不是问题,只要不同的id保持相互链接以及它们的正确值。在
不幸的是,到目前为止,我所有分割数据的尝试都以惨败告终。我已经成功地设置了一个函数来重复包含分号的数据,并通过我的函数对每一列进行解析,但之后无法分割数据。在
def delete_dup(df,column):
for a in column:
location = df.loc[df.duplicated(subset= column, keep=False)]
for x in location:
semicolon = df.loc[df[column].str.contains(';', regex=True)]
duplicate = semicolon.duplicated(subset= column, keep='first')
tiny_df = semicolon.loc[duplicate]
split_up = tiny_df[column].str.split(';')
return pd.concat([df, split_up])
'Value' ID_1 ID_2 0
11122222 ABC42123 33333 NaN
21219299 YOF21233 88821 NaN
00022011 ERE00091 23124 NaN
75643311;21233332 ROB21288 99421 NaN
12412421 POW94277 12231;33221 NaN
54221721 IRS21231;YOU28137 13123 NaN
75643311;21233332 ROB21288 99421 NaN
54221721 IRS21231;YOU28137 13123 NaN
12412421 POW94277 12231;33221 NaN
NaN NaN NaN [75643311, 21233332]
我觉得这是我来的最近的一次,但离我想要的还差得很远。我试图对数据帧执行的任何“If”语句都会遇到“ValueError:数据帧的真值不明确”。使用a.empty、a.bool()、a.item()、a.any()或a.all()。这是一个非常令人沮丧的错误。有什么办法让熊猫做我想做的吗?在
也许不是最优雅的方式,但这种只是解决了问题:
第1步
我们掌握的数据:
第2步
让我们把行为不端的列分开
^{pr2}$第3步
让我们将复制与原始数据合并到单个数据帧中:
如果这能解决你的问题,请告诉我。在
解决方案有两个部分。第一种方法是确定哪些行有分号,第二种方法是创建额外的行并将它们连接起来。第一部分在
contains_sc
中完成,第二部分在检测到带有分号的行时迭代行并运行函数create_additional_rows
。在希望这有帮助。在
相关问题 更多 >
编程相关推荐