有没有办法将 DataFrame 重塑为另一个具有不受限制的行的方法。我只想要一个有 3 列的 DataFrame,不管 DataFrame 中有多少行?
例如,
letters = pd.DataFrame({'Letters' : ['A', 'B', 'C','D', 'E', 'F', 'G', 'H',
'I','J']})
Letters
0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
8 I
9 J
Run Code Online (Sandbox Code Playgroud)
我想像这样用填充零来重塑它,在那里没有价值。
first second third
A B C
D E F
G H I
J 0 0
Run Code Online (Sandbox Code Playgroud)
据我所知,在 numpy reshape 方法中,您需要明确确定您想要多少列和行。
我有制表符分隔文件(city-data.txt):
Alabama Montgomery 32.361538 -86.279118
Alaska Juneau 58.301935 -134.41974
Run Code Online (Sandbox Code Playgroud)
有可能以某种方式读取前两列作为字符串,最后两列作为浮点数?
我的输出应该如下所示:
[(Alabama,Montgomery,32.36,-86.28),
(Alaska,Juneau,58.30,-134.42)]
Run Code Online (Sandbox Code Playgroud)
我试过了:
mylist2=np.genfromtxt(r'city-data.txt', delimiter='\t', dtype=("<S15","
<S15", float, float)).tolist()
Run Code Online (Sandbox Code Playgroud)
这给了我字节类型的前两列:
[(b'Alabama', b'Montgomery', 32.361538, -86.279118),
(b'Alaska', b'Juneau', 58.301935, -134.41974)]
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
with open('city-data.txt') as f:
mylist = [tuple(i.strip().split('\t')) for i in f]
Run Code Online (Sandbox Code Playgroud)
这给了我字符串类型的所有列:
[('Alabama', 'Montgomery', '32.361538', '-86.279118'),
('Alaska', 'Juneau', '58.301935', '-134.41974')]
Run Code Online (Sandbox Code Playgroud)
我无法想出如何实现我需要的东西......