将新添加的 csv 文件中的一行追加到 python 中的旧文件

Append a row from newly added csv file to the old one in python

我正在尝试编写一个脚本,该脚本将从新添加到文件夹的 csv 文件中获取特定的列,并将其作为一行添加到旧的 csv 文件中。因此,只要将新的 csv 文件添加到文件夹中,程序就应该执行此脚本,从而产生一个包含许多行的大 csv 文件。

我有一个程序可以将 csv 文件附加到这样的文件中:

path = r'/Users/.../Desktop/files' # use your path

all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

frame.to_csv(r'/Users/.../Desktop/files/New.csv', index = False)

但它并没有真正完成全部工作,因为我想要的是新添加文件中的这一行(没有 header):

要附加到此类文件中:

只要将新的 csv 文件拖放到文件夹中,它就会发生,因此也许应该使用 time.sleep() 函数。

我真的希望你能帮忙..当我试图写整个脚本时我完全迷路了..:(

P.S。抱歉啰嗦:/

因此,使用以下数据帧:

import pandas as pd

frame = pd.DataFrame(
    {
        "ID": ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"],
        "col1": [244, 65, 22, 97, 147, 89, 6, 88, 49, 34],
        "col2": [122, 43, 12, 87, 100, 70, 3, 54, 18, 82],
    }
)
print(frame)
# Output
  ID  col1  col2
0  A   244   122
1  B    65    43
2  C    22    12
3  D    97    87
4  E   147   100
5  F    89    70
6  G     6     3
7  H    88    54
8  I    49    18
9  J    34    82
old_csv = pd.DataFrame(
    {
        "Time Point": [1],
        "A": [9],
        "B": [14],
        "C": [219],
        "D": [54],
        "E": [99],
        "F": [78],
        "G": [5],
        "H": [77],
        "I": [65],
        "J": [44],
    }
)
print(old_csv)
# Output
   Time Point  A   B    C   D   E   F  G   H   I   J
0           1  9  14  219  54  99  78  5  77  65  44

你可以试试这个:

new_row = pd.DataFrame(frame.loc[:, "col2"]).T.rename(
    columns={
        k: v for k, v in enumerate(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"])
    }
)


new_csv = pd.concat([old_csv, new_row]).reset_index(drop=True)
new_csv.at[len(old_csv), "Time Point"] = (
    len(old_csv) + 1
)
new_csv["Time Point"] = new_csv["Time Point"].astype(int)

print(new_csv)
# Ouput
   Time Point    A   B    C   D    E   F  G   H   I   J
0           1    9  14  219  54   99  78  5  77  65  44
1           2  122  43   12  87  100  70  3  54  18  82