我有一堆文件要打开,读取第一行,将其解析为几个预期的信息,然后将文件名和这些数据作为行放在数据帧中.我的问题涉及以pandanic/pythonic方式构建数据帧的推荐语法(我已经想到的文件打开和解析).
对于一个愚蠢的例子,当您想要创建一个新列时,似乎建议执行以下操作:
df = pd.DataFrame(files, columns=['filename'])
df['first_letter'] = df.apply(lambda x: x['filename'][:1], axis=1)
Run Code Online (Sandbox Code Playgroud)
但我不能这样说:
df['first_letter'], df['second_letter'] = df.apply(lambda x: (x['filename'][:1], x['filename'][1:2]), axis=1)
Run Code Online (Sandbox Code Playgroud)
因为apply函数只创建一个包含元组的列.
请记住,我将放置一个函数来代替lambda函数,该函数将打开文件并读取和解析第一行.
您可以将两个值放在一个Series中,然后它将作为apply的数据帧返回(其中每个系列都是该数据帧中的一行).用一个虚拟的例子:
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
Run Code Online (Sandbox Code Playgroud)
然后,您可以分配两个新列:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1795 次 |
| 最近记录: |