我有一堆文件要打开,读取第一行,将其解析为几条预期的信息,然后将文件名和这些数据作为行放入数据框中。我的问题涉及以 pandanic/pythonic 方式构建数据框的推荐语法(我已经弄清楚了文件打开和解析)。
举一个简单的例子,当你想创建一个新列时,下面似乎是推荐的做法:
df = pd.DataFrame(files, columns=['filename'])
df['first_letter'] = df.apply(lambda x: x['filename'][:1], axis=1)
但是我不能,比如说,这样做:
df['first_letter'], df['second_letter'] = df.apply(lambda x: (x['filename'][:1], x['filename'][1:2]), axis=1)
因为 apply 函数只创建一个包含元组的列。
请记住,我将放置一个函数来代替 lambda 函数,该函数将打开文件并读取和解析第一行。
最佳答案
您可以将这两个值放在一个系列中,然后它将作为数据框从应用中返回(其中每个系列是该数据框中的一行)。用一个虚拟的例子:
In [29]: df = pd.DataFrame(['Aa', 'Bb', 'Cc'], columns=['filenames'])
In [30]: df
Out[30]:
filenames
0 Aa
1 Bb
2 Cc
In [31]: df['filenames'].apply(lambda x : pd.Series([x[0], x[1]]))
Out[31]:
0 1
0 A a
1 B b
2 C c
然后您可以将其分配给两个新列:
In [33]: df[['first', 'second']] = df['filenames'].apply(lambda x : pd.Series([x[0], x[1]]))
In [34]: df
Out[34]:
filenames first second
0 Aa A a
1 Bb B b
2 Cc C c
关于pandas - pd.dataframe.apply() 创建多个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23836289/