我对 Python 和数据科学真的很陌生。
我有一个包含 30 列的 100K+ CSV 数据集。如果满足某些条件,目标是向数据集添加一些行。
为了方便起见,假设我只有三列名为“A”、“B”和“C”,A 和 B 的类型是整数。C 是一个字符串。
我们不用担心 B 和 C,因为我会把所有 B 列的值都设为 0,然后我会计算 C。
所以这里是我的“想象”数据集的快速视图:
A
_____
| 1 |
| 4 |
| 3 |
| 7 |
_______
我在 Dataframe 中解析了我的数据集,并按“A”的值对其进行了排序。
所以,现在,它看起来像这样:
A
_____
| 1 |
| 3 |
| 4 |
| 7 |
_______
现在,我想遍历我的 DataFrame 并检查我是否在两行之间缺少一些数字并将它们添加到数据框中,即:如果 A[i+1]-A[i]>1,我想添加 A[i]他们之间+1。
A
_____
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
_______
据我所知,我有以下选择:
将我的新行直接附加到新的数据框。我不知道为什么,但我认为这不是一个好主意。如果我是对的,你们能解释一下为什么吗?如果我错了,你们能解释为什么吗?
将我的新行附加到一个列表中,从该列表中创建一个数据框,然后将我的旧数据框与我的新数据框“加入”。
Idk,有什么建议吗?
我现在的主要问题是,处理大型 DataFrame 很麻烦,而且我的脚本需要很长时间才能完成这项工作。你们能引导我找到处理如此大量数据的“正确方法”吗?
顺便说一句,这是我为选择 n°2 所做的代码:
df=pd.read_csv("dataset.csv")
df.sort_values(by="A")
L=[]
for i in range (0, len(df)-1):
actual=df.at[i, 'A']
next=df.at[(i+1), 'A']
diff=actual-next-1
for j in range(1, diff):
L.append(actual+1)
actual +=1
df=pd.DataFrame(data=L, columns=list(df))
df.to_csv("my_output.csv", sep=',')
隔江千里
达令说
相关分类